Clang-tidy ложноположительный с наддувом :: вариант - PullRequest
0 голосов
/ 22 мая 2018

При запуске clang-tidy в этом минимальном примере, опубликованном ниже, я получаю (imho) ложноположительную ошибку от clang-tidy (полная трассировка ошибок в конце)

Value assigned to field 'id' in implicit constructor is garbage or undefined [clang-analyzer-core.uninitialized.Assign]

Код только назначаетboost::variant к одному из двух значений.Ошибка исчезнет, ​​если я заменю конструктор копирования на Size(const Size& sz) = default;.Однако я не могу этого сделать, поскольку в реальном коде размер равен cv::Size.

Несмотря на то, что он может быть не настолько элегантным, насколько это возможно, я не вижу в этом никакой ошибки. Может ли кто-нибудь указать мне направление, если я ошибаюсь, лязг или прибавка.

#include <boost/variant.hpp>

class Size
{
public:
  Size() = default;
  Size(const Size &sz) : width(sz.width) {}
  int width{0};
};

struct B {
  Size size;
};

struct A {
  Size size;
  uint32_t id{0};
};

int main() {
  using T = boost::variant<A, B>;
  T config = B();
}

Я бегу:

  • clang-tools-дополнительная фиксация 50fe75789f08b96284d2c14cb6583b3783c74460
  • llvm commit afb8c1fed21eb4848d86f2d28e9cb3afcfbb2656
  • boost 1.67

* *1022* 1025 * Полная ошибка: 1030

...