来自cpprefference.com的模板参数特化示例不起作用

时间:2017-02-04 15:04:40

标签: c++ c++11

我在http://en.cppreference.com/w/cpp/language/partial_specialization

上找到了这个例子
template <int I, int J, int K> struct B {};
template <int I> struct B<I, I*2, 2> {};  // OK: first parameter is deducible

使用-std = c ++ 11和-std = c ++ 14编译时出错了

如何编译?或者可能是错误的例子?

error: template argument ‘(I * 2)’ involves template parameter(s)
 template <int I> struct B<I, I*2, 2> {};  // OK: first parameter is deducible

1 个答案:

答案 0 :(得分:6)

这是最近的语言更改,甚至几个编译器的当前版本还没有实现它。它是CWG issue 1315,它将状态列为“暂时准备好”,但根据评论中的@bogdan,该变更已被接受进入标准。在此更改之前,由于编译器在其错误消息中显示的原因,它无效。

更改GCC的行为在GCC错误跟踪器上为PR 77781