以下摘自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 中的有效函数类型吗?
偶然我从标准草案中找到了这个例子:
[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
。