正在C++中获取依赖于模板的模板类型
Getting template dependent template type in C++
好吧,我正在用C++98编写代码,并试图利用元编程。
我写过这种"活页夹":
template<
template<
template<typename TArg1_1> class TArg1,
template<typename TArg2_1> class TArg2,
template<typename TArg3_1> class TArg3,
typename TArg4> class TFunction,
template<typename TArg1_1> class TArg1,
template<typename TArg2_1> class TArg2,
template<typename TArg3_1> class TArg3>
struct MetaBinder_4_3_templates_1_1_1_0 {
template <typename TArg4>
struct type : public TFunction<TArg1, TArg2, TArg3, TArg4> {};
};
我接下来要做的是用以下代码将参数"绑定"到它:
template<
template <typename TType> class TApplier,
typename TInitialType>
struct PreserveQualifiers : public PreserveQualifier<
TypeClearVolatile,
TypeSetVolatile,
typename template <typename> MetaBinder_4_3_templates_1_1_1_0 <
PreserveQualifier,
TypeClearConst,
TypeSetConst,
TApplier>::type,
TInitialType>
{};
PreserveQualifier
声明如下:
template<
template <typename TType> class TClearer,
template <typename TType> class TSetter,
template <typename TType> class TApplier,
typename TInitialType>
struct PreserveQualifier;
但上面的代码实际上给了我这个错误(GCC 4.7,我分成了几行):
error: wrong number of template arguments (3, should be 4)
error: provided for '
template<
template<class TType> class TClearer,
template<class TType> class TSetter,
template<class TType> class TApplier,
class TInitialType
> struct PreserveQualifier'
我认为问题出在typename template <typename> MetaBinder_4_3_templates_1_1_1_0 <...>::type
构造语法上。实际的问题是:在这种情况下,我应该如何指定依赖模板类型?
尝试:
MetaBinder_4_3_templates_1_1_1_0 <...>::template type
请参阅简化示例:LIVE DEMO
相关文章:
- 如何定义依赖于参数包转换的函数的返回类型
- 依赖于特定类类型的C++模板方法
- 依赖于依赖类型的非静态数据成员的非限定名称
- 具有依赖于实现的成员函数类型的多个静态接口
- 在全局命名空间中重载不依赖于用户定义类型的标准定义类型的运算符是否格式正确?
- 如何定义依赖于模板参数的类型定义
- 如何使用类型专用化模板方法,该类型本身就是一个模板,其中只有返回类型依赖于模板类型
- 类型依赖于可变参数模板的类
- 依赖于参数的查找在来自另一个命名空间的别名类型上意外行为
- 使用的类型别名如何指定依赖于模板参数的模板模板参数
- C++使变量类型依赖于用户输入
- 使返回类型依赖于调用源
- 使用 auto 关键字并依赖于编译器的类型推断
- 如果函数类型仅依赖于其自己的模板参数,则取决于函数类型
- 为什么 sizeof 内置类型(char 除外)在 C 和 C++ 中依赖于编译器?
- 为什么我们需要依赖于 C++ 中的模板参数的类型类型名
- 将 POD 联合双关到基本类型:依赖于实现或符合标准
- 如何更好地处理依赖于模板参数的类成员类型
- 引用性不依赖于模板函数中的类型
- 非类型模板参数,其类型依赖于另一个参数