如何声明对函数类型的const引用

mkm*_*afa 12 c++ c++11

#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;
}
Run Code Online (Sandbox Code Playgroud)

你如何声明const reference一个函数类型?上面的语句打印true所以我假设constin T以某种方式被忽略.是否有可能const reference将a 声明为函数类型?

Rak*_*111 18

[dcl.fct] p7:

一的效果CV-限定符-SEQ的函数声明是不一样的功能类型的顶部上添加CV-资格.在后一种情况下,忽略cv限定符.

因此,您只能引用一个函数,但不能const&const函数类型一样被忽略,如上所述.


YSC*_*YSC 13

首先,所有引用都是不变的.一旦引用已初始化并绑定到对象,它就不能绑定到另一个对象.参考是不变的.

当我们谈论"const引用"时,这实际上意味着对const对象的引用.

是否可以声明对函数类型的const引用?

自由函数是const意味着什么?没有.只有非静态成员函数才能是const.不,不可能引用常量函数.更好的const是,编译器会忽略该限定符,这是有充分理由的.