繁体   English   中英

指向绑定成员 function 的指针/引用的禁止语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM