在C++中,您可以这样做:
struct A
{
int a, b;
double k = 3; // OK
};
Run Code Online (Sandbox Code Playgroud)
但不是这个
struct A
{
int a, b;
auto f = [this]() {return this->a + this->b; }; // Error
};
Run Code Online (Sandbox Code Playgroud)
编译器通知我们错误
非静态数据成员声明'auto'
让我们知道这会奏效
struct A
{
int a, b;
function<int(void)> f = [this]() { return this->a + this->b; }; // OK
};
Run Code Online (Sandbox Code Playgroud)
我想问一些有关这方面的见解.特别是为什么(简单的答案是标准明确不允许它根据某些经文)
换句话说:类成员初始化中是否包含足够的成员类型?
我知道在类成员初始化中是语法糖,但这是编译器可以收集附加信息的情况,但由于设计选择而无法这样做?(很像auto
C++ 11之前的缺乏)或更深层次选择设置的限制(如静态输入的语言等)?
归档时间: |
|
查看次数: |
150 次 |
最近记录: |