N3797 :: 8.3.5 / 6
具有cv-qualifier-seq或ref-qualifier的函数类型(包括 由typedef-name(7.1.3,14.1)命名的类型仅出现在:
[...]
- 指向成员的指针引用的函数类型
[...]
你能举个例子吗?我正在尝试以下方法:
struct A
{
int foo();
};
int A::* foo() &; //ill-formed.
struct B
{
int (*bar)() &; //ill-formed
};
答案 0 :(得分:1)
我试图把它through a compiler。
前者,
int A::* foo() &;
语法不正确。要创建指向成员函数的指针,您仍需要输入括号:
int (A::*foo)() &;
然后接受就好了。
另一个,
int (*bar)() &;
被gcc接受,但我的本地clang
拒绝
13 col 10错误:指向功能类型的指针不能有'&'限定符
理所当然。它是指向非成员函数的指针,没有任何资格可作为参考。 Gcc显然只是忽略了&
。