ошибка компиляции инициализации списка - PullRequest
6 голосов
/ 06 февраля 2012

c ++ 11 стандартный 8.5.4 пример инициализации списка:

std::map<std::string,int> anim = { {"bear",4}, {"cassowary",2}, {"tiger",7} };

Но я пробовал VC10, gcc 4.6 и Comeau, ни один из этих компиляторов не допустит этого? Почему это так?

1 Ответ

3 голосов
/ 06 февраля 2012

Спасибо за все ответы в комментариях.

Затем я вернулся к стандарту c ++ 98 и 03, и да, 8.5.4, безусловно, новая секунда в c ++ 11!Вот почему он не поддерживается полностью всеми компиляторами.

После добавления флага -std = c ++ 0x с gcc 4.6.1 теперь это прекрасно компилируется.

Добавление кода тестирования для всех, ктоможет понадобиться ссылка:

#include <map>
#include <string>
#include <initializer_list>
#include <iostream>

using namespace std;
int main() 
{
    std::map<std::string,int> collection = {{"bear",4}, {"cassowary",2}, {"tiger",7}};
    for(auto it: collection)
        std::cout << it.first << " has value " << it.second << std::endl;
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...