SU3*_*SU3 5 c++ gcc templates partial-specialization c++14
令我惊讶的是,当我尝试编译此代码时出现错误GCC 7.2.0.
码:
#include <typeinfo>
#include <iostream>
#include <utility>
template <typename Seq, typename Seq::value_type Inc> struct increment;
template <typename T, T... I, T Inc>
struct increment<std::integer_sequence<T,I...>, Inc> {
using type = std::integer_sequence<T,(I+Inc)...>;
};
int main(int argc, char* argv[]) {
typename increment<std::make_index_sequence<2>,1>::type seq;
std::cout << typeid(seq).name() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
错误:
error: partial specialization 'struct increment<std::integer_sequence<T, I ...>, Inc>' is not more specialized than [-fpermissive]
struct increment<std::integer_sequence<T,I...>, Inc> {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
spec.cc:5:62: note: primary template 'template<class Seq, typename Seq::value_type Inc> struct increment'
template <typename Seq, typename Seq::value_type Inc> struct increment;
^~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
我已经使用increment了很长一段时间GCC 6.2.0没有问题.
哪一个是正确的?如果GCC 7是正确的,我该如何编写这个元函数?
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |