【发布时间】:2018-08-04 14:52:44
【问题描述】:
给定以下类模板:
template <template <typename... Args> class Container, typename... Args>
struct container_type_holder {};
我想提取它的模板模板参数和它的可变参数以在另一个上下文中重用。示例:
using c1 = container_type_holder<std::map, std::string, int>;
using c2 = container_type_holder<tt_parameter<c1>, vt_parameter<c1>>;
tt_parameter<c1> 是从 c1 中提取模板模板参数的魔术技巧,vt_parameter<c1> 是提取其可变参数模板参数的魔术技巧。
为了提取模板模板参数,我尝试在container_type_holder 中添加一个别名,但这不起作用,因为它不是一个完整的类型。为了提取可变参数模板参数,我尝试了相同的策略,但没有成功。
template <template <typename... Args> class Container, typename... Args>
struct container_type_holder
{
using container = Container; // doesnt work
using args = Args...; // ???
};
我不知道这是否可能,我是模板世界的初学者。
【问题讨论】:
-
using指令仅适用于单一类型,但这里Container是未实例化的模板,Args...是参数包。
标签: c++ c++11 templates variadic-templates template-meta-programming