根据 CPP 参考,std::is_function可以按如下方式实现。有人可以解释为什么它有效,因为它似乎不直接寻址可调用对象?
template<class T>
struct is_function : std::integral_constant<
bool,
!std::is_const<const T>::value && !std::is_reference<T>::value
> {};
Run Code Online (Sandbox Code Playgroud)
它利用了https://eel.is/c++draft/basic.type.qualifier#1中的这句话
函数或引用类型始终是无 cv 限定的。
因此,给定一个 type T,它会尝试创建一个const T. 如果结果不是const限定类型,则 T 必须是函数或引用类型。然后它消除了引用类型,就完成了。
(不要与const最后的成员函数混淆:也就是说,用标准语言来说,“带有 cv-qualifier-seq 的函数类型”,与“cv 限定的函数类型”不同)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |