我需要定义一个具有由模板类组成的元组的结构。
用法:
TestStruct<A, float, float, int32_t> test_a = { std::make_tuple(A(1.0), A(2.0), A(3)) };
TestStruct<B, float, float, int32_t> test_b = { std::make_tuple(B(1.0), B(2.0), B(3)) };
目前我的实施情况如下:
template<typename ClassBase, typename... ParamType>
struct TestStruct
{
std::tuple<typename ClassBase<ParamType>...> m_testValues;
};
通过编译我得到以下错误:
error: ‘ClassBase’ is not a class template
std::tuple<class ClassBase<ParamType>...> m_testValues;
^
我如何定义我的结构?
答案 0 :(得分:8)
模板不是类型。此参数typename ClassBase
表示模板必须接受类型作为第一个参数。但它会继续将其视为模板ClassBase<ParamType>
,但事实并非如此。
如果您需要模板模板参数,请将其声明为:
template<template<class> class ClassBase, typename... ParamType>
struct TestStruct
{
std::tuple<ClassBase<ParamType>...> m_testValues;
};