考虑这些:
std::is_const<void() const>::value == false
std::is_same<void() const, std::remove_const_t<void() const>>::value == true
我原以为函数类型void() const
会被视为const
。
为什么不呢?
答案 0 :(得分:4)
免费功能不能为const
,因此会忽略应用于免费功能类型的const
。
只有成员函数可以是const
。
[C++14: 8.3.5/6]:
cv-qualifier-seq 或 ref-qualifier 只能属于:< /强>
- 非静态成员函数的函数类型
- 指向成员的指针引用的函数类型
- 函数typedef声明的顶级函数类型或 alias-declaration ,
- type-id 在 type-parameter (14.1)的默认参数中,或
- type-parameter (14.2)的模板参数的 type-id 。
cv-qualifier-seq 在函数声明符中的作用与在函数类型之上添加cv-qualification不同。在后一种情况下,将忽略cv限定符。 [注意:具有 cv-qualifier-seq 的函数类型不是cv限定的类型;没有cv限定的函数类型。 -end note] [..]