我有一个如下所示的嵌套模板类:
template<typename T>
class IDMap
{
private:
struct Item {
uint16_t mVersion;
T mItem;
template <typename... Arguments>
Item(uint16_t version, Arguments&&... args);
};
// ....
}
稍后我想定义item
的构造函数,这是我的尝试:
template <typename T, typename... Arguments>
IDMap<T>::Item::Item(uint16_t version, Arguments&&... args) : mVersion(version), mItem(std::forward<Arguments>(args)...)
{
}
上面的编译虽然编译,但它只是说'IDMap<T>::Item::{ctor}' : unable to match function definition to an existing declaration
。缺少某些东西 - 正确的语法是什么?
答案 0 :(得分:4)
正确的语法是:
template <typename T>
template <typename... Arguments>
IDMap<T>::Item::Item(uint16_t version, Arguments&&... args) : mVersion(version), mItem(std::forward<Arguments>(args)...)
{
}