关于函数值参数的常量的特征?

时间:2015-09-05 21:19:39

标签: c++ function c++11 typetraits

是否可以使用特征或其他方法来确定函数(或方法)的值参数是否被声明为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...>; };

1 个答案:

答案 0 :(得分:1)

不,没有,主要是因为无法确定函数可以采用的参数。即使在像模板这样的简单情况下,你的查询也是模棱两可的,即使正常的推导规则会使参数成为非常量,更不用说重载和类似的事情,也可以用const类型显式地实例化。

在询问参数是否为常数之前,您必须知道参数是什么,这是不可能的。