我正在运行 clang-tidy 8.0 并收到警告:
constructor does not initialize these fields:
在模板类上使用委托构造函数时。我想知道这是否是我应该压制的误报,或者我的代码是否确实是错误的。
有问题的示例代码是这样的:
template<typename T>
class A
{
public:
explicit A(const std::size_t size) :
data_(nullptr),
data_size_(size)
{
// ...
}
explicit A(const std::vector<T>& b) :
A(b.size())
{
// ...
}
private:
T* data_;
std::size_t data_size_;
};
在此代码上运行 clang-tidy 时:
clang-tidy-8 --checks=* test.cpp
除其他外,我得到:
warning: constructor does not initialize these fields: data_ [cppcoreguidelines-pro-type-member-init]
explicit A(const std::vector<T>& b) : A(b.size()) {}
但是,如果我从类中删除模板并使其成为普通类,则不会出现此类错误。
在模板类上使用委托构造函数时我是否缺少某些东西,或者这是 clang-tidy 中的错误?
谢谢!