次の関数 はtoArray
、いつか C++11 を C++11 に変換する可能性がありstd::tuple
ます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;
}