嵌套模板问题
Nested templates issue
我有一个嵌套模板 class 声明如下:
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
。缺少某些东西 - 正确的语法是什么?
正确的语法是:
template <typename T>
template <typename... Arguments>
IDMap<T>::Item::Item(uint16_t version, Arguments&&... args) : mVersion(version), mItem(std::forward<Arguments>(args)...)
{
}
我有一个嵌套模板 class 声明如下:
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
。缺少某些东西 - 正确的语法是什么?
正确的语法是:
template <typename T>
template <typename... Arguments>
IDMap<T>::Item::Item(uint16_t version, Arguments&&... args) : mVersion(version), mItem(std::forward<Arguments>(args)...)
{
}