Questions tagged «specialization»

6
模板化类中单个方法的模板专业化
始终考虑到至少包含两个.CPP文件的文件包含以下包含我的模板化类的标头,因此此代码可以正确编译: template <class T> class TClass { public: void doSomething(std::vector<T> * v); }; template <class T> void TClass<T>::doSomething(std::vector<T> * v) { // Do something with a vector of a generic T } template <> inline void TClass<int>::doSomething(std::vector<int> * v) { // Do something with a vector of int's } 但是请注意专业化方法中的内联。由于该方法要定义一次以上,因此必须避免链接器错误(在VS2008中为LNK2005)。我了解这一点是因为AFAIK的完整模板专业化与简单方法定义相同。 …

2
模板类成员函数的显式专业化
我需要专门针对某种类型的模板成员函数(比方说double)。当类X本身不是模板类时,它可以正常工作,但是当我使它成为模板时,GCC开始给出编译时错误。 #include <iostream> #include <cmath> template <class C> class X { public: template <class T> void get_as(); }; template <class C> void X<C>::get_as<double>() { } int main() { X<int> x; x.get_as(); } 这是错误消息 source.cpp:11:27: error: template-id 'get_as<double>' in declaration of primary template source.cpp:11:6: error: prototype for 'void X<C>::get_as()' does not …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.