我有一个这样声明的嵌套模板类:
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)...)
{
}
关于c++ - 嵌套模板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28896802/