Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 嵌套模板问题_C++_Templates - Fatal编程技术网

C++ 嵌套模板问题

C++ 嵌套模板问题,c++,templates,C++,Templates,我有一个嵌套模板类声明如下: template<typename T> class IDMap { private: struct Item { uint16_t mVersion; T mItem; template <typename... Arguments> Item(uint16_t version, Arguments&&... args); }; //

我有一个嵌套模板类声明如下:

template<typename T>
class IDMap
{
private:
    struct Item {
        uint16_t mVersion;
        T mItem;

        template <typename... Arguments>
        Item(uint16_t version, Arguments&&... args);
    };

    // ....
}
但是上面的代码没有编译,它只是说
'IDMap::Item::{ctor}':无法将函数定义与现有声明相匹配
。缺少某些内容-正确的语法是什么?

正确的语法是:

template <typename T>
template <typename... Arguments>
IDMap<T>::Item::Item(uint16_t version, Arguments&&... args) : mVersion(version), mItem(std::forward<Arguments>(args)...)
{
}
模板
模板
IDMap::Item::Item(uint16_t版本、参数和参数):mVersion(版本)、mItem(std::forward

template <typename T>
template <typename... Arguments>
IDMap<T>::Item::Item(uint16_t version, Arguments&&... args) : mVersion(version), mItem(std::forward<Arguments>(args)...)
{
}