Den*_*hin 2 c++ templates metaprogramming c++11
我有类似的类型Type<Param>.我如何在c ++ 11中检索Param?
可能是这样的:
// I know it's not correct but it conveys the idea very well
template
<
template <class Param> class Type
>
struct GetParam
{
typedef Param Result;
};
// e.g.
typedef GetParam<std::vector<double>>::Result X; // must return double
typedef GetParam<std::list<double>>::Result X; // double
typedef GetParam<std::vector<std::list<double>>::Result X; // std::list<double>
Run Code Online (Sandbox Code Playgroud)
template<class Type>
struct GetParam;
template<template<typename ...> class Tmp, typename T1, typename ...Types>
struct GetParam<Tmp<T1, Types...>> {
typedef T1 type;
};
Run Code Online (Sandbox Code Playgroud)
但是,传递给的类模板特化GetParam只能有类型模板参数.所以你不能通过std::array例子.不可能完全通用GetParam,因为你必须征集每个可能的模板参数列表种类,并且基本上有无限多.
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |