【发布时间】:2015-05-01 13:28:30
【问题描述】:
我有可变参数模板类,它只是 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 派生一个类?
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...>
【问题讨论】:
-
这对我来说是正确的,您使用的是什么编译器和版本? (我冒昧地修复了
SomeObject的构造函数名称,从不是错误原因的错误消息来看) -
DbgGameObject嗯?所以你没有发布你正在测试的代码。测试 MCVE,然后发布错误消息,因为它显示为 该 MCVE。 -
没有VS14 CTP 6。
-
@Fabian:那是 VS15 CTP 6。
标签: c++ c++11 inheritance variadic-templates stdtuple