3
下面的函數,toArray
,也許有一天轉換爲C++ 11 std::tuple
成C++ 11 std::array
:C++ 11的std ::元組到std ::數組轉換導致可變參數模板崩潰
#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
@GManNickG:同意:現在正在處理。 – user2023370