Initialisierung von std::array als Basisklasse
-
Hallo Leute,
Ich baue mir gerade eine vector-Klasse. Diese erbt privat von std::array. Diese Klasse hat einen Konstruktor, der dieses std::array initialisieren soll. Folgendes funktioniert:
template <typename... Args> vector_base(Args&&... args) : array_type{{ args... }} {}Aber ohne doppelte {} tut es das nicht. Warum? Ich dachte hier greift brace ellision.
Gruesse,
Der Kellerautomat
-
Kellerautomat schrieb:
Hallo Leute,
Ich baue mir gerade eine vector-Klasse. Diese erbt privat von std::array. Diese Klasse hat einen Konstruktor, der dieses std::array initialisieren soll. Folgendes funktioniert:
template <typename... Args> vector_base(Args&&... args) : array_type{{ args... }} {}Aber ohne doppelte {} tut es das nicht. Warum? Ich dachte hier greift brace ellision.
So viel ich weiß, tut es das nicht. Hier:
8.5.1/1111 In a declaration of the form
T x = { a };
braces can be elided in an initializer-list as follows.105 [...]
105) Braces cannot be elided in other uses of list-initialization.Dein Fall fällt unter
other uses.