【发布时间】:2021-02-17 20:19:00
【问题描述】:
此代码使用的模板成员对 std::vector 和其他类型的工作方式不同。到目前为止,它工作正常。但是为类外的 std::vector 定义 get 方法的正确语法是什么?我知道使用 traits 和其他助手来使这个工作,但如果有一个有效的语法,我想要这个简单的解决方案。
#include <iostream>
#include <vector>
using namespace std;
struct s
{
template < class X > void get (X x)
{
cout << "inner\n";
};
template <class X> void get(std::vector<X> vec)
{
cout << "inline any vector\n";
}
};
int main ()
{
std::vector < int >vec;
std::vector< double> dvec;
s x;
x.get (1);
x.get (vec);
x.get(dvec);
return 0;
}
这似乎不起作用
template <class X> void s::get(std::vector<X> v)
{
}
【问题讨论】:
-
无法复制。
标签: c++ templates partial-specialization