0

vector<array<T, N>>&を返す別のメソッドの結果を受け取るメソッド(テンプレート)を呼び出したいvector<T>

vector<T>a を aとして再解釈する効率的な (O(1)) 方法はありvector<array<T,1>>ますか? それは可能ですか/それに対して安全reinterpret_castですか?

4

1 に答える 1

0

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"
于 2015-04-29T10:09:14.097 に答える