是否可以防止在没有专业化的情况下使用C++模板?

Tia*_* Li 3 c++ templates template-specialization

是否可以防止在没有专业化的情况下使用C++模板?

例如,我有

template<class T>
void foo() {}
Run Code Online (Sandbox Code Playgroud)

而且我不希望它被用于没有专门用于foo<int>foo<char>.

Lil*_*ard 8

您应该能够在通用情况下声明该函数而不实际定义它.这将导致对非特定模板的引用以发出未定义的符号链接器错误.

template<class T>
void foo();

template<>
void foo<int>() {
    // do something here
}
Run Code Online (Sandbox Code Playgroud)

对我来说这很好用clang++.