使用类型为T的N个args创建std :: tuple的模板

时间:2014-06-02 00:32:13

标签: c++ c++11

我正在尝试创建一个元函数,该元函数创建std::tuple N类型为T的args,例如:

my_meta_function<4, int>::type

会产生:

std::tuple<int, int, int, int>

或者:

my_meta_function<2, std::string>::type

会产生:

std::tuple<std::string, std::string>

到目前为止,我提出的是:

template <std::size_t N, class T, class... Args>
struct my_meta_function
{
    typedef typename my_meta_function<N - 1, Args..., T>::type type;
};

template <class... Args>
struct my_meta_function<0, Args...>
{
    typedef std::tuple<Args...> type;
};

我不太确定我的模板递归是否正确,但是在GCC 4.7.2中,当我尝试实例化此模板时,编译器失败,并显示错误消息:

test.cpp:13:8: internal compiler error: in process_partial_specialization, at cp/pt.c:4414
Please submit a full bug report,
with preprocessed source if appropriate.

问题:我这样做是否正确? GCC 4.7.2此时是否只是马车?或者我编码错误了吗?

0 个答案:

没有答案