LINUX.ORG.RU

[C++11] Инициализация std::array


0

2

Пример из книги

#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 };

★★★

Последнее исправление: frozenix (всего исправлений: 2)

Ответ на: комментарий от unanimous

Да, осталась. Это тут не причем.

Похожая ошибка появляется в таком случае:

int test[][2] = { 1, 2, 3, 4 };
warning: missing braces around initializer for ‘int [2]’ [-Wmissing-braces]

frozenix ★★★
() автор топика
Ответ на: комментарий от frozenix

Тут проблема в том что описан двумерный вектор, а инициализируется он одномерным.

Так же c++ не может высчитывать длину массива на основе его инициализации.

ono
()
Ответ на: комментарий от frozenix

Зато есть структура и в ней массив. Похоже на неполную поддержку c++11. В этом случае можно попробовать инициализировать как

std::array<int, 10> myArray = {{ 1, 2, 3 }};
Но может сругаться на нехватку значений.

ono
()
Ответ на: комментарий от ono

угу, кажись я понял, после того как посмотрел содержимое array, спасибо большое.

frozenix ★★★
() автор топика
Ответ на: комментарий от Pi

зы я не думаю, кто какой-то из авторов for dumpers осилит книгу в 1400 страниц с описанием паттернов

frozenix ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.