在follow = delete声明时定义函数特化错误

时间:2015-12-01 21:10:24

标签: c++ c++11 clang

我有一个=delete d的常规模板函数,以及int

的特化
template <typename> void f() = delete;

template <>
void f<int>() { }

我的目标是在没有为模板参数提供特化时,让函数模板在编译时间(而不是链接时)出错。 f<int>()应该会成功,而f<double>()应该会出错。虽然上面的内容适用于gcc,但它与error: redefinition of 'f'的clang失败了。如果我删除=delete它编译得很好,但是f<double>()在链接时间之前不会失败。

以上是否有效?删除模板的特化是重新定义还是专业化是重载解析的另一个候选者。

0 个答案:

没有答案