函数值参数的常量特征?

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

本文关键字:特征 常量 值参 参数 函数      更新时间:2023-10-16

是否可以使用trait或其他方法来确定函数(或方法)的值参数是否声明为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,也可以用const类型显式实例化,更不用说重载和类似的事情了。

在询问形参是否为const之前,必须知道形参是什么,而这是不可能的。