[英]c++ template member function with partial spezialisation outside class
此代碼使用對 std::vector 和其他類型不同的模板成員。 到目前為止,它工作正常。 但是,在 class 之外為 std::vector 定義 get 方法的正確語法是什么? 我知道使用特征和其他幫助器來使這個工作,但如果有一個有效的語法,我想要這個簡單的解決方案。
#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; sx; x.get (1); x.get (vec); x.get(dvec); return 0; }
這似乎不起作用
template <class X> void s::get(std::vector<X> v) { }
在 class 之外為 std::vector 定義 get 方法的正確語法是什么?
那就是在 class 模板中聲明它,然后在 go 前面聲明它並在外面定義它:
struct s {
template < class X >
void get (X x) {
cout << "inner\n";
}
template <class X> // declaration
void get(std::vector<X> v);
};
template <class X> // definition
void s::get(std::vector<X> v) {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.