首页 > 解决方案 > 如何声明对函数类型的 const 引用

问题描述

#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,所以我假设constinT以某种方式被忽略。是否可以将 a 声明const reference为函数类型?

标签: c++c++11

解决方案


[dcl.fct]p7

函数声明器中cv-qualifier-seq的效果与在函数类型之上添加 cv-qualification 不同。在后一种情况下,将忽略 cv 限定符。

所以你只能引用一个函数,而不是 a const&,因为const函数类型被忽略,如上所述。


推荐阅读