#include <iostream>
#include <type_traits>
void func()
{
}
int main()
{
using T = const decltype(func) &;
using T2 = void (&)();
std::cout << std::boolalpha << std::is_same_v<T, T2> << std::endl;
}
如何向函数类型声明const reference
?上面的陈述打印true
,所以我假设const
中的T
被忽略了。是否可以将const reference
声明为函数类型?
答案 0 :(得分:18)
cv-qualifier-seq 在函数声明符中的作用与在函数类型之上添加cv-qualification不同。在后一种情况下,cv限定符被忽略。
所以你只能引用一个函数,而不是const&
,因为函数类型的const
被忽略了,如上所述。
答案 1 :(得分:13)
首先,所有引用都是常量。一旦引用已初始化并绑定到对象,它就不能绑定到另一个对象。参考是不变的。
当我们谈论&#34; const reference&#34;时,这实际上意味着对const对象的引用。
是否可以声明对函数类型的const引用?
自由函数是const意味着什么?没有。只有非静态成员函数才能是const。不,不可能引用常量函数。更好的是,编译器忽略了const
限定符,这是有充分理由的。