指向成员的指针所引用的函数类型

Function type to which a pointer to member refers

本文关键字:引用 函数 类型 指针 成员      更新时间:2023-10-16

N3797::8.3.5/6

带有cv限定符seq或ref限定符的函数类型(包括由typedef名称(7.1.3,14.1)命名的类型)只能显示为:

[…]

--指向成员的指针指向的函数类型

[…]

你能举个例子吗?我正在尝试以下操作:

struct A
{
    int foo();
};
int A::* foo() &; //ill-formed.
struct B
{
    int (*bar)() &; //ill-formed
};

我试着通过编译器编译它。

前者,

int A::* foo() &;

是不正确的语法。要创建指向成员函数的指针,您仍然需要在括号中输入:

int (A::*foo)() &;

然后它就被接受了。

另一种,

int (*bar)() &;

被gcc接受,但我的本地clang用拒绝了它

13 col 10错误:指向函数类型的指针不能有"&"限定

这是一个指向非成员函数的指针,没有什么可以作为引用。Gcc显然只是忽略了CCD_ 2。