C++ 用C+包装Loki::Typelist+;11可变模板
我试图避免使用LOKI_TYPELIST_n宏,所以我认为我可以编写简单的LOKI::TYPELIST包装器C++ 用C+包装Loki::Typelist+;11可变模板,c++,metaprogramming,variadic-templates,C++,Metaprogramming,Variadic Templates,我试图避免使用LOKI_TYPELIST_n宏,所以我认为我可以编写简单的LOKI::TYPELIST包装器 template <typename...Ts> struct TYPELIST; template <> struct TYPELIST<> { typedef Loki::NullType Result; }; template <typename HEAD, typename...Ts> struct TYPELIST&l
template <typename...Ts>
struct TYPELIST;
template <>
struct TYPELIST<>
{
typedef Loki::NullType Result;
};
template <typename HEAD, typename...Ts>
struct TYPELIST<HEAD,Ts...>
{
typedef Loki::Typelist<HEAD, TYPELIST<Ts...>::Result> Result;
};
模板
结构类型表;
模板
结构类型表
{
typedef-Loki::NullType结果;
};
模板
结构类型表
{
typedef-Loki::类型列表结果;
};
编译后,我得到以下错误:
error: type/value mismatch at argument 2 in template parameter list for ‘template<class T, class U> struct Loki::Typelist’
error: expected a type, got ‘TYPELIST<Ts ...>::Result’
错误:“template struct Loki::Typelist”的模板参数列表中参数2的类型/值不匹配
错误:应为类型,但得到“TYPELIST::Result”
我认为TYPELIST::Result
是一种类型。怎么了?
此处为GCC 4.6.2
我想这样使用它:
typedef TYPELIST<
EventTank1,
EventTank2,
EventTank3
>::Result EVENTS_ALL__;
typedef类型列表<
事件1,
事件2,
事件箱3
>::结果事件\u所有\u;
谢谢。您忘记了
TYPELIST::Result前面的typename
单词。仅仅因为你知道它是一种类型,并不意味着编译器也知道它(如果有的话!)。Oh…:(我对新版本的GCC很懒,在错误消息中建议忘记typename
。谢谢Matthieu。