std :: is_function如何实现?

瑞安·奎因(Rian Quinn):

以下是如何实现的std::is_function

template<class T>
struct is_function : std::integral_constant<
    bool,
    !std::is_const<const T>::value && !std::is_reference<T>::value
> {};

(来自CPP参考

在我看来,int在这个定义下,an 将是一个函数。我想念什么?

艾克斯·哈格维迪利(Ayxan Haqverdili)

让我们仔细研究一下出现的条件:
如果const T不是const(const因为函数不是对象,所以不适用于函数类型),T也不是引用(const出于相同的原因也不适用于引用) ,这是一种函数类型。int(或任何其他非功能非引用类型)不适合,因为is_const<const int>::valuetrue

根据C ++ 17标准§11.3.5函数/第7节:(强调我的)

函数声明器中cv-qualifier-seq的作用与在函数类型之上添加cv-qualification的作用不同。在后一种情况下,将忽略cv限定词。[注意:具有cv-qualifier-seq的函数类型不是cv限定的类型;没有cv合格的函数类型。—尾注] [...]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章