Verstößt das als Objekt verwendete gekapselte Zeichenarray gegen die strikte Aliasing-Regel

Verstößt die folgende Klasse gegen die strenge Aliasing-Regel:

template<typename T>
class store {
    char m_data[sizeof(T)];
    bool m_init;
public:
    store() : m_init(false) {}
    store(const T &t) : init(true) {
        new(m_data) T(t);
    }
    ~store() {
        if(m_init) {
            get()->~T();
        }
    }
    store &operator=(const store &s) {
        if(m_init) {
            get()->~T();
        }
        if(s.m_init) {
            new(m_data) T(*s.get());
        }
        m_init = s.m_init;
    }
    T *get() {
        if (m_init) {
            return reinterpret_cast<T *>(m_data);
        } else {
            return NULL;
        }
    }
}

Meines Erachtens ist ein Standard falsch, aber ich bin nicht sicher (meine Verwendung besteht darin, eine Reihe von Objekten zu haben)T + Einige Metadaten dieser Objekte, aber um die Objektkonstruktion / -dekonstruktion zu steuern, ohne manuell Speicher zuzuweisen), da die zugewiesenen Objekte als Beispiele für die Platzierung verwendet werdennew im Standard.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage