2
と、次のコメントでエラーをコンパイルして生成されていません。テンプレートmake_unique <int[]>初期化子
#include <memory>
#include <initializer_list>
template <typename T, typename E>
std::unique_ptr<T> make_unique_arr(const std::initializer_list<E>& il)
{
//std::unique_ptr<T> p{new int[il.size()]{1,2,3,4,5}}; //works
// gcc error: cannot convert 'const std::initializer_list<int>' to 'int' in initialization
// VS2015 error C2440: 'initializing': cannot convert from 'const std::initializer_list<int>' to 'int []'
std::unique_ptr<T> p{new int[il.size()]{il}};
return p;
}
int main()
{
std::unique_ptr<int[]> arr_ptr1{new int[5]{1,2,3,4,5}};
auto arr_ptr2{make_unique_arr<int[]>({1,2,3,4,5})};
}
テンプレートを直接初期化リストを使用するように書くことができますどのように?