【发布时间】:2016-10-08 22:10:15
【问题描述】:
看起来我们可以在具有静态存储持续时间的对象的构造函数中安全地使用std::cout 对象,如question 中所述。
但是,我不完全确定在变量模板的情况下我们可以安全地使用它们:
#include <iostream>
template<class T>
T x = T{};
void foo()
{
class Test
{
public:
Test() { std::cout << "Test::Test\n"; }
};
Test t = x<Test>;
}
int main()
{
std::cout << "main\n";
}
此代码在 clang (live example) 中崩溃,我不确定它是否是错误。
【问题讨论】:
-
适用于 GCC。也许这是clang中的一个错误?
-
@Cornstalks 也许吧。但也许这只是一种未指明的行为?