是否可以使编译器在默认初始化成员上发出诊断信息?

时间:2018-03-12 16:58:19

标签: c++ gcc clang

考虑简单的C ++代码:

class X {
  int a_, b_;
public:
  X(int a) : a_(a) {} // b not mentioned in intializer list
  int get_sum() { return a_ + b_; }
};

int foo () {
  X x(2); // x.b_ is indetermined
  return x.get_sum(); // returns garbage
}

在此代码段中,x.b_default-initialized以确定价值。我尝试了gcc 7.2和clang 5.1,没有人警告我这个简单的案例。

例如clang:

clang++ init.cc -S -Wuninitialized -Wall -Wextra -Weffc++

静默编译。

这是非常不方便的,而且,我认为,对于这样的事情来说,克拉很容易理解。

我是否遗漏了一些让编译器报告这种情况的明显方法?或者可能是我错了,x.b_已正确初始化?

0 个答案:

没有答案