vector<array<T, N>>&
を返す別のメソッドの結果を受け取るメソッド(テンプレート)を呼び出したいvector<T>
vector<T>
a を aとして再解釈する効率的な (O(1)) 方法はありvector<array<T,1>>
ますか? それは可能ですか/それに対して安全reinterpret_cast
ですか?
vector<array<T, N>>&
を返す別のメソッドの結果を受け取るメソッド(テンプレート)を呼び出したいvector<T>
vector<T>
a を aとして再解釈する効率的な (O(1)) 方法はありvector<array<T,1>>
ますか? それは可能ですか/それに対して安全reinterpret_cast
ですか?
T
実際にある場合はstd::array<U,1>
、テンプレートの推定とオーバーロードでこれを行うことができるはずです:
template <typename T>
std::vector<T> myFunc()
{ return {T{1}}; }
template <typename T>
void myOtherFunc(std::vector<T>)
{ cout << "not an array\n"; }
template <typename T, size_t N>
void myOtherFunc(std::vector<std::array<T,N>>)
{ cout << "an array\n"; }
次に、次のように呼び出します。
myOtherFunc(myFunc<int>()); //prints "not an array"
myOtherFunc(myFunc<std::array<int,1>>()); //prints "an array"