我有以下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的问题。