【发布时间】:2015-12-09 16:57:24
【问题描述】:
嗯,这就是我想要实现的目标。我有一个这样的结构:
template<typename...Ts> struct s
{
template<int...Is> struct r
{
// whatever
};
};
现在我想再写一个模板结构:
template<typename r> struct q
{
//
};
模板应该接受 struct r 的特化,我想访问这个实例化的模板参数。
为了让自己更清楚:我希望能够写出这样的东西:
using some_specialisation_of_q = q< s<T1,T2,T3>::r<5,6,7> >;
some_specialisation_of_q varname;
并且我希望能够在q 的定义中访问T1,T2,T3、5,6,7(或传递给专门化s 和r 的任何其他模板参数)。
我的第一次尝试是这样的:
template<template<typename...Ts> template<int...Is> typename R, typename= typename std::enable_if<std::is_same<R, s<Ts...>::r<Is...>>::value>::type>
struct q
{
//
}
但不幸的是,这会产生编译器错误。
如何做到这一点?
【问题讨论】:
-
r将不得不发布Ts...。否则这是一个非推断的上下文。