我如何使用可变参数模板声明std :: tuple?

时间:2015-12-10 01:00:38

标签: c++ templates c++11 variadic-templates

也许我在这里很天真,但我相信以下代码应该编译:

template <typename ... T>
struct Test {
        std::tuple<T> foo;
};

int main() {
        struct Test<int, long> test;

        return 0;
}

相反,g ++抱怨:

test.cpp:5: error: parameter packs not expanded with '...':
test.cpp:5: note:         'T'

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您可以通过使用...

扩展包来实现这一目标
template <typename... T>
struct Test
{
    std::tuple<T...> foo;
    //         ^^^^
};