假设我有一个具有一些模板化参数的类,以及一个可以访问其中每个参数的函数,例如
template <typename... Types>
class Foo
{
public:
template <typename Type>
Type& get() { return std::get<Type>(member_tuple); }
protected:
std::tuple<Types...> member_tuple;
};
我想使用这个类作为基类,并专门化子类中的get()
函数来做某些事情......特别......但不是那么专业,只能定义任何模板参数然而。也许是这样的:
template <typename... Types>
class Bar
: public Foo<Types...>
{
public:
template <typename Type>
Type& special_get()
{
// do your special thing in here somewhere.
return Foo<Types...>::get<Type>(this->member_tuple);
}
};
然而,这是一个编译器错误:它抱怨它预期
return Foo<Types...>::get(this->member_tuple)
。
为了让我更加困惑,如果我省略了<Type>
参数,然后尝试调用该函数,我会得到一个“无法推断模板参数'Type'”错误。
如何将附加模板参数传递给包装的基类函数?