次の方法を使用して入力のサイズを見つけるコードがあります。
template <typename T>
void func (T& input) {
const void *valuePtr;
size_t valueSize;
tie(valuePtr, valueSize)
= detail::ParamInfo<typename remove_const<T>::type>::get(input);
//code
}
入力が配列の場合、ポインターのサイズではなく実際のサイズを取得する必要があります。したがって、私が持っている場合
size_t data[3];
func
データ パラメータを使用して呼び出すと、確かに得られますvalueSize = 12
が、配列のサイズがわからない場合は、次のような問題が発生します。
vector<size_t> data;
data = getData(); //as a result data is a vector of 2 elements
size_t *dataArr = &data[0];
param で呼び出すfunc
と、8 ではなく 4 が返されます。dataArr
これを解決するにはどうすればよいですか - 返されたパラメータのサイズを知ることも予測することもできませんgetData()