【发布时间】:2012-10-18 22:16:28
【问题描述】:
以下函数 toArray 可能有一天会将 C++11 std::tuple 转换为 C++11 std::array:
#include <tuple>
#include <array>
template <typename T, typename ...U>
std::array<T,sizeof...(U)>
toArray(std::tuple<U...>) {
return std::array<T,sizeof...(U)>();
}
如果我尝试使用以下代码调用toArray,在 G++ 4.8 下我可以成功编译。但是,使用 Clang++ 3.2 编译会使 Clang 前端崩溃。我的代码是有效的 C++ 吗?
int main(int argc, char *argv[])
{
auto tup = std::make_tuple(1,2,3,4,5,6,7,8);
toArray<int>(tup);
return 0;
}
【问题讨论】:
-
看起来不错。我认为这是一个错误。如果是这样,你应该报告它。
-
即使它无效,也不应该使编译器崩溃。 :) 为此提交一个错误。
-
@GManNickG:同意:现在正在处理。
标签: c++ templates c++11 tuples variadic-templates