[英]Forbidden syntax for pointer/reference to bound member function
假设我有以下内容:
struct A {
int foo(int bar) const { return bar; }
};
我想指定一个引用“绑定”成员 function 的名称(即):
A a;
auto opt1 = a.foo; // Forbidden, instead do something like...
auto opt2 = [&a] (int i) { return a.foo(i); }; // or ...
auto opt3 = std::bind(&A::foo, a, std::placeholders::_1);
然后调用绑定成员 function 就很简单了:
assert(opt1(42) == 42); // If 'opt1' were allowed
assert(opt2(42) == 42);
assert(opt3(42) == 42);
在我看来, opt1
将是实现目标的首选解决方案。 但是,语言禁止通过 opt1 指定绑定的opt1
。
我的问题纯粹是合法的:C++(20) 标准的哪一部分禁止像opt1
这样的构造? 我的问题不是为什么,而是在哪里。
[expr.ref]:
[对于表达式
E1.E2
]....如果E1.E2
引用非静态成员 function...该表达式只能用作成员 function 调用的左操作数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.