函数值参数的常量性特征?

Trait for const-ness of a function's value parameters?

是否可以使用特征或其他方法来确定函数(或方法)的值参数是否声明为常量?例如,在下面的代码中,可以使用 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 类型显式实例化,更不用说重载和类似问题了。

在你问参数是不是const之前,你必须知道参数是什么,那是不可能的。