【发布时间】:2012-08-28 10:53:52
【问题描述】:
给定一个模板别名
template<unsigned U>
using uint_ = integral_constant<unsigned,U>;
部分特化
template<class T,class P>
struct size{};
作为
template <class T,unsigned U>
struct size<T,uint_<U>>{};
为 clang 3.1 生成警告 astemplate parameter can not be deduced 而 gcc 4.7 不生成警告
那么,是不是格式错误的代码?
【问题讨论】:
-
我看不出这不可行的原因。别名模板会立即被替换。
-
它不仅在 clang 3.1 中给出警告,而且如果我尝试实例化它,它会忽略专业化。但是,直接使用integral_constant 代替别名可以照常工作。我猜是clang bug。
-
@abir:这意味着模板别名在 Clang 中没有正确实现。
标签: c++ c++11 partial-specialization