这是我在cpp.react库的文档中找到的C++代码段:
auto in = D::MakeVar(0);
auto op1 = in ->* [] (int in)
{
int result = in /* Costly operation #1 */;
return result;
};
Run Code Online (Sandbox Code Playgroud)
我从未见过这种->* []
符号.首先,我认为这只是一个错字,但我也在源代码中找到了这样一个表达式:
auto volume = (width,height,depth) ->* [] (int w, int h, int d) {
return w * h * d;
};
Run Code Online (Sandbox Code Playgroud)
这是有效的C++ 11(或C++ 14)吗?这是什么意思?
C++继续让我感到惊讶.今天我发现了 - >*运算符.它是可重载的,但我不知道如何调用它.我设法在课堂上重载它,但我不知道如何调用它.
struct B { int a; };
struct A
{
typedef int (A::*a_func)(void);
B *p;
int a,b,c;
A() { a=0; }
A(int bb) { b=b; c=b; }
int operator + (int a) { return 2; }
int operator ->* (a_func a) { return 99; }
int operator ->* (int a) { return 94; }
int operator * (int a) { return 2; }
B* operator -> () { return p; }
int ff() { return 4; }
}; …
Run Code Online (Sandbox Code Playgroud) 维基百科将它们称为:
- >对象的成员b指向的一个
- >*由a指向的对象指向的
成员.*成员b指向的成员
但我需要在不使用"a"和"b"的情况下引用它们.他们有名字吗?