У меня есть программа, разделенная на два исходных файла:
example.cpp
#include <iostream>
class A {
public:
A(int x) {
::std::cout << "In A(" << x << ")\n";
}
};
static A first(1);
static A second(2);
example __ main.cpp
int main(int argc, const char *argv[])
{
return 0;
}
Гарантированно ли вывод этой программы :
In A(1)
In A(2)
на всех платформах и компиляторах? Если да, то где в стандарте это сказано? Имеет ли значение, если я использую пространства имен, а первый
и второй
появляются в разных пространствах имен? Как насчет того, чтобы они не были статичными и я использую анонимное пространство имен?