如何从 C++ 中的可变参数模板 class 派生
How to derive from a variadic template class in C++
我有可变参数模板 class,它只是 std::tuple 的包装器:
template <typename ... Child>
class Tpl
{
public:
Tpl() {}
Tpl(Child ...args) : child(args...)
{}
template <typename T>
T& Get()
{
return std::get<T>(child);
}
template <typename T>
const T& GetConst()
{
return std::get<T>(child);
}
private:
std::tuple<Child ...> child;
};
如何从 Tpl
中正确导出 class?
template <typename... Ts>
class SomeObject : public Tpl<Ts...>
{
public:
SomeObject(/*Types ... args*/) /*: child(args...)*/
{
}
private:
int num;
};
编译器 (VS14 CTP 6) 消息只告诉我:
syntax error: missing ',' before '<' in the line: class SomeObject: public Tpl<Ts...>
您没有告诉我们您使用的是什么编译器(包括它的版本),但大概它 limited/no 支持可变参数模板,或者在这方面存在错误。考虑升级它或完全切换到其他东西。 GCC 和 Clang 都不错。
我有可变参数模板 class,它只是 std::tuple 的包装器:
template <typename ... Child>
class Tpl
{
public:
Tpl() {}
Tpl(Child ...args) : child(args...)
{}
template <typename T>
T& Get()
{
return std::get<T>(child);
}
template <typename T>
const T& GetConst()
{
return std::get<T>(child);
}
private:
std::tuple<Child ...> child;
};
如何从 Tpl
中正确导出 class?
template <typename... Ts>
class SomeObject : public Tpl<Ts...>
{
public:
SomeObject(/*Types ... args*/) /*: child(args...)*/
{
}
private:
int num;
};
编译器 (VS14 CTP 6) 消息只告诉我:
syntax error: missing ',' before '<' in the line: class SomeObject: public Tpl<Ts...>
您没有告诉我们您使用的是什么编译器(包括它的版本),但大概它 limited/no 支持可变参数模板,或者在这方面存在错误。考虑升级它或完全切换到其他东西。 GCC 和 Clang 都不错。