我有一个=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>()
在链接时间之前不会失败。
以上是否有效?删除模板的特化是重新定义还是专业化是重载解析的另一个候选者。