`int(int) const` 是 C++23 中的有效函数类型吗?

问题描述 投票:0回答:1

以下摘自cppref

template<class...>
class move_only_function; // not defined

template<class R, class... Args>
class move_only_function<R(Args...) const>;

我还尝试了以下代码:

// ok
std::function<int(int)> fn; 

// error: implicit instantiation of undefined template
// 'std::function<void () const>'
std::function<int(int) const> fn; 

int(int) const
C++23 中的有效函数类型吗?

c++ function std standards function-signature
1个回答
1
投票

偶然我从标准草案中找到了这个例子:

[Example 4: typedef int FIC(int) const;
FIC f;              // error: does not declare a member function
struct S {
  FIC f;            // OK
};
FIC S::*pm = &S::f; // OK
— end example]

本节介绍使用别名来声明但不定义(成员)函数的可能性。巧合的是,它很好地说明了

foo(bar) const
类型。

上面的

FIC

int(int) const
的别名。它是一个函数类型。然而,没有该类型的函数。您可以使用它来声明类内的成员,或声明指向成员函数的指针,分别如标有 
OK
 的行所示。指针的类型是
int(S::*)(int)const

© www.soinside.com 2019 - 2024. All rights reserved.