Ist das CodefragmentSind constexpr Array-Mitglieder Zeitkonstanten kompilieren?
struct Parameters {
static constexpr int n = 2;
static constexpr double v[n] = {4.0, 5.0};
};
Rechts 11 C++? Und wenn ja, sind Parameters::v[0]
und Parameters::v[1]
Kompilierzeitkonstanten oder ist nur der Zeiger Parameters::v
selbst ein constexpr
(was auch immer das zur Kompilierzeit bedeuten würde)?
Wie Sie sehen können, bin ich allgemein ein wenig verwirrt über constexpr
Arrays und ihre Initialisierung in Klassen/Strukturen. Bitte zögern Sie nicht nur meine spezifische Frage zu beantworten, sondern auch allgemeine Fallstricke und ähnliches zu diesem Thema zu erwähnen.
Beachten Sie, dass 'v' kein Zeiger ist, es ist ein Array. – Angew
Scheint vollkommen legal zu sein: http://ideone.com/oMwXAj –
möglich duplicate von [\ 'x \ [0 \] == 1 \' konstanter Ausdruck in C++ 11 wenn x const int \ [\] ?] (http://stackoverflow.com/questions/18903113/x0-1-constant-expression-in-c11-when-x-is-const-int) –