嵌套模板问题

时间:2015-03-06 10:25:03

标签: c++ templates

我有一个如下所示的嵌套模板类:

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。缺少某些东西 - 正确的语法是什么?

1 个答案:

答案 0 :(得分:4)

正确的语法是:

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

DEMO