奇怪的 C++ 语法:用一些值设置函数输出

Strange C++ syntax: setting function output with some value

我正在尝试 pybind11 和 运行,我 运行 跨越了一些 st运行ge 语法:

#include <pybind11/pybind11.h>

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin"; // optional module docstring
    m.attr("the_answer") = 42;
    m.def("add", &add, "A function which adds two numbers");
}

我认为 PYBIND11_MODULE 是一个宏,pybind11 应该执行代码块内的所有内容以设置 Python 模块。但是,m.doc() = ...m.attr("the_answer") = 42 处的语法看起来 st运行ge。虽然代码确实可以在我的机器上编译。我的问题是,它们是什么,它们有名字吗?

它正在返回对对象的引用。检查这个例子:

class A {
private:
   int var;
public: 
   int& internal_var() { return var; }
};

...

A a;
a.internal_var() = 1;