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

时间:2014-10-03 04:45:37

标签: c++ pointers reference

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
};

1 个答案:

答案 0 :(得分:1)

我试图把它through a compiler

前者,

int A::* foo() &;

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

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

然后接受就好了。

另一个,

int (*bar)() &;

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

  

13 col 10错误:指向功能类型的指针不能有'&'限定符

理所当然。它是指向非成员函数的指针,没有任何资格可作为参考。 Gcc显然只是忽略了&