Пример из книги
#include <iostream>
#include <array>
int main(int argc, const char *argv[])
{
std::array<int, 10> myArray = { 1, 2, 3 };
std::cout << "Array size = " << myArray.size() << std::endl;
for(const auto &i : myArray)
{
std::cout << i << std::endl;
}
}
Сбираю при помощи gcc 4.6.1 с флагами -Wall -std=c++0x -pedantic
Выдает такое:
/home/andrew/Projects/array/main.cpp: In function ‘int main(int, const char**)’:
/home/andrew/Projects/array/main.cpp:6:45: warning: missing braces around initializer for ‘std::array<int, 10ul>::value_type [10] {aka int [10]}’ [-Wmissing-braces]
Если делать без инициализации то все отлично
std::array<int, 10> myArray;
Хоть это просто предупреждение, но хотелось бы узнать в чем моя ошибка.
UPD. В таком случае ошибка пропадает.
std::array<int, 3> myArray = {{ 1, 2, 3 }};
UPD2. Согласно википедии это еще не реализовано в моей версии gcc
http://en.wikipedia.org/wiki/Array_(C )
Note that for standard conforming compilers it is possible to use fewer braces (according to 8.5.1 (11) of the Standard). That is, the array template can be initialized as follows:
array<int, 4> a = { 1, 2, 3 };