【发布时间】:2016-06-20 22:48:17
【问题描述】:
使用以下代码:
struct my_symbols {
enum class syms { symb_0_0, symb_0_1 };
};
template
< typename SymbolEnums
>
struct outer {
using syms_0 = typename SymbolEnums ::syms;
template <syms_0 AnSym0, int Int>
struct inner {
static int const val;
};
};
template
< typename SymbolEnums
>
template
< typename outer<SymbolEnums>::syms_0 AnSym0
, int Int
>
int const outer<SymbolEnums>::inner<AnSym0, Int>::val = Int;
int main() {
return
outer<my_symbols>::
inner<my_symbols::syms::symb_0_1, 1>::val;
}
我明白了,使用 gcc5.2.0:
非模板‘int outer_tmpl::inner_tmpl::val’的模板定义 值=整数; ^
使用 clang3.8.0,我得到:
嵌套名称说明符'outer_tmpl::inner_tmpl::' 声明不引用类、类模板或类模板部分特化 值=整数; ^
如何更正代码?
TIA。
【问题讨论】:
标签: c++ templates static nested