При запуске 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