【发布时间】:2019-07-13 01:55:37
【问题描述】:
抱歉,标题不具描述性。
我在 C++14 代码库中有一个类,我们称之为HugeClass。 HugeClass 是 LiteralType,所以它至少有一个 constexpr ctor:
class HugeClass {
public:
constexpr HugeClass() : member{0}
{
}
// Over 9k LOC
...
private:
int member;
};
一切都好。但不是。
clang-tidy plus -std=c++14 barks:
member initializer 'member' does not name a non-static data member or base class.
重新排序的字段不会发生这种情况:
class HugeClass {
private:
int member;
public:
...
};
-std=c++17 也没有。
移除 constexpr 很奇怪。
- 我做错了什么?
- 标准是否涉及到这一点?
- 这可能是 clang(-tidy) 中的一个错误吗?
【问题讨论】:
-
我不能说整洁,但是 vanilla clang 和 g++ 都接受这个代码。
-
我也是can't reproduce。我们可以得到minimal reproducible example吗?