是否可以限制模板?

Dan*_*tor 1 c++ generics templates

可能重复:
C++限制模板功能
是否可以编写C++模板来检查函数是否存在?

是否可以限制可以实例化模板的类型(即,如果我使用,则会出现编译器错误template<type_not_allowed>)?

Joh*_*ing 7

一种方法是不提供默认实现,并仅在您希望允许的类型上专门化您的类模板.例如:

#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
}
Run Code Online (Sandbox Code Playgroud)