В качестве примера рассмотрим этот заголовок:
#include <iostream>
template<bool = true>
struct A {
A() {
static int x;
std::cout << &x << "\n";
}
};
static A<> a;
Что делать, если у меня было два разных файла на С++, включая этот файл, - он будет печатать один и тот же адрес дважды, гарантированно? Что еще более важно, если x
был объектом другого типа с нетривиальным конструктором, гарантировалось ли его выполнение только один раз?