¿Cómo puedo detectar que un constructor es realmente constexpr, para poder utilizar la inicialización estática?

Mire este código:

struct NonConstexpr {
    NonConstexpr() { }
};

template <typename T>
struct Bar {
    NonConstexpr nonConstexpr;

    constexpr Bar() { }
};

struct Foo {
    Bar<void> bar;

    constexpr Foo() { }
};

En este código,Fool constructor de @ está etiquetado comoconstexpr, pero no puede aparecer en una expresión constante, ya que en realidad no cumple con los requisitos de esto. Puedes leer los detalles de esto en miPregunta anterio.

Mi pregunta es: ¿puedo detectar de alguna manera el tiempo de compilación, queFool constructor de @ en realidad no se comportará comoconstexpr?

La razón por la que pregunto esto, me gustaría detectar que una variable global deFoo se inicializará estáticamente o no (me gustaría poner unstatic_assert en esto, como mi @ globFoo objeto debe inicializarse estáticamente).

Nota, esa es la solución directa, para agregar temporalmenteconstexpr a la variable no funciona, ya que miFoo tiene un destructor no trivial.

Respuestas a la pregunta(2)

Su respuesta a la pregunta