Aco*_*orn 5 c++ template-meta-programming variadic-templates
我有一个简单的 TypeList 实现,如下所示:
template<typename... Ts>
struct TypeList
{
static constexpr std::size_t size{ sizeof... (Ts) };
};
struct T1
{
};
struct T2
{
};
struct T3
{
};
using Types = mpl::TypeList<T1, T2, T3>;
Run Code Online (Sandbox Code Playgroud)
我想找出T2typelist 内部类型的索引Types。这是我目前正在使用的,但是它仅在我搜索的类型位于类型列表的开头时才有效。否则,它编译时会出现错误“ value:未声明的标识符”。
template<typename, typename>
struct IndexOf {};
// IndexOf base case: found the type we're looking for.
template <typename T, typename... Ts>
struct IndexOf<T, TypeList<T, Ts...>>
: std::integral_constant<std::size_t, 0>
{
};
// IndexOf recursive case: 1 + IndexOf the rest of the types.
template <typename T, typename TOther, typename... Ts>
struct IndexOf<T, TypeList<TOther, Ts...>>
: std::integral_constant<std::size_t,
1 + IndexOf<T, Ts...>::value>
{
};
Run Code Online (Sandbox Code Playgroud)
你收到错误是因为
IndeOf<T, Ts...>::value
Run Code Online (Sandbox Code Playgroud)
未定义。它应该是
IndexOf<T, TypeList<Ts...>>::value
Run Code Online (Sandbox Code Playgroud)
反而。
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |