您可以在对象生命周期开始之前创建对该对象的引用,然后在没有未定义行为的情况下使用它吗?

Bwm*_*mat 5 c++ c++03

请考虑以下代码:

aligned_storage<sizeof(T)> buffer;
T& ref(*reinterpret_cast<T*>(&buffer));
new (&buffer) T();
Use(ref);
Run Code Online (Sandbox Code Playgroud)

这样做的上下文是将一些全局对象重构为显式初始化的对象(而不是在静态初始化期间由编译器初始化),而不会影响现有用户(并且不使用宏).

我认为代码会导致编写未定义的行为,但有没有任何有效(便携)的方法来完成同样的事情?我能想到的最接近的是使用某种类型operator T&,但仍然可能会破坏用户.