【发布时间】:2021-04-04 19:20:39
【问题描述】:
给定这个测试片段:
class Member
{
};
class MemberNoDefault
{
public:
MemberNoDefault(int x) {}
};
class Owner
{
inline static Member member1;
inline static Member member2();
inline static MemberNoDefault member3(10);
static MemberNoDefault member4;
};
MemberNoDefault Owner::member4(10);
使用 GCC 9.3 编译时失败,member3 尝试使用带有参数的构造函数。错误是:
error: expected identifier before numeric constant
error: expected ',' or '...' before numeric constant
这不应该吗?如果我用member3 注释掉该行,则编译成功。
【问题讨论】:
-
注意这个约束与变量是
inline还是static无关。