是否有可能使用特徵或其他方法來確定函數(或方法)的值參數是否被聲明爲const?例如,在下面的代碼中,可以使用fn_params
來查找第一個參數的類型爲const int *
;然而第二個參數僅被識別爲具有類型double
。函數值參數的常量的特徵?
float foo(const int *, const double) { return 7.6f; }
template <typename T, typename ...Ts>
struct fn_params<T(*)(Ts...)> { using type = std::tuple<Ts...>; };
參數的頂級'const'在函數的類型中被忽略。 – chris
這是什麼用例?如果(!is_const(x))x = 42'嘗試'不會編譯,即使'is_const'可以工作。 –
如果單個const參數不會被忽略,那麼該特徵看起來像這樣http://coliru.stacked-crooked.com/a/b1316c1ba5e284c4。 –