В этом коде:
#include <array>
#include <cstdint>
struct K {
std::array<char, 4> a;
std::uint8_t b;
};
const K k1 = { {'T', 'e', 's', 't'}, 1 };
class X {
const K k2 = { {'A', 'b', 'c', 'd'}, 2 };
};
Я могу нормально инициализировать глобальный объект k1
. Но попытка использовать тот же синтаксис для инициализатора по умолчанию члена класса k2
приводит к ошибкам компилятора (аналогичные ошибки из g++-4.8.2 и g++-5.2.0):
main.cpp:12:44: error: array must be initialized with a brace-enclosed initializer
const K k2 = { {'A', 'b', 'c', 'd'}, 2 };
^
main.cpp:12:44: error: too many initializers for 'std::array<char, 4ul>'
Как правильно инициализировать k2
при его объявлении?
main.cpp:9:17: warning: suggest braces around initialization of subobject [-Wmissing-braces]
(дляstd::array
инициализации). - person Jarod42   schedule 22.12.2015