У меня есть следующий MCVE:
#include <sstream>
struct A {
static std::stringstream s;
};
std::stringstream A::s;
int main() {}
Когда я запускаю clang-tidy 6.0.1 для этого кода, я получаю следующее предупреждение:
static_sstream.cpp:7:22: warning: initializing non-local variable with non-const expression depending on uninitialized non-local variable 'out' [cppcoreguidelines-interfaces-global-init]
std::stringstream A::s;
^
Кажется, что проблема заключается в том, что конструктор std::stringstream
имеет параметр со значением по умолчанию std::ios_base::out
, Мой вопрос, это реальная проблема? И если да, то как правильно использовать статический std::stringstream
в классе?
MSVC 2015 (windows) компилирует приведенный выше фрагмент кода без каких-либо предупреждений. Проверены заголовки и есть constexpr. Похоже, проблема с Clang-Tidy.
Других решений пока нет …