Is it possible to restrict a template?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
C++ Restrict Template Function
Is it possible to write a C++ template to check for a function's existence?
是否可以限制可以为其实例化模板的类型?(也就是说,如果我使用
一种方法是不提供默认实现,只在希望允许的类型上专门化类模板。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> using namespace std; template<class X> class Gizmo { public: Gizmo(); }; template<> Gizmo<int>::Gizmo() { } int main() { Gizmo<float> gf; // ERROR: No specialization for Gizmo<float> results in a linking error } |
使构造函数成为非法类型的私有:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | template<typename T> class Z { public: Z() {} }; template<> class Z<int> { private: Z(); }; Z<float> f; // OK Z<int> i; // Compile time error. |
您可以在此处检查限制模板功能
我不能发表评论,所以这是一个答案…