clang поддержка инициализации агрегации в Mac OS X

Я пытаюсь скомпилировать инициализацию собрания списка С++ 11 на clang++ на Mac.

#include <iostream>
#include <list>
#include <string>

using namespace std;
int main(int argc, char *argv[]) {
    list<string> aList = {"abc", "def", "xyz"};
}

Это команда для компиляции.

clang++-mp-3.1 -std=c++11 iterator.cpp

У меня нет соответствующей ошибки конструктора.

iterator.cpp:7:23: error: no matching constructor for initialization of
  'std::list<string>'
std::list<string> aList = {"abc", "def", "xyz"};
                  ^       ~~~~~~~~~~~~~~~~~~~~~

Я пробовал с XCode

clang -v
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.2
Thread model: posix

Я также пробовал с clang++ из порта

clang++-mp-3.1 -v
clang version 3.1 (branches/release_31)
Target: x86_64-apple-darwin11.4.2
Thread model: posix

Я получил тот же результат. Что может быть не так?

clang поддерживает C++ 11 lambda


person prosseek    schedule 01.06.2013    source источник
comment
Вы использовали флаг -std=c++11 или -std=c++0x?   -  person Andy Prowl    schedule 02.06.2013
comment
@H2CO3: у меня включен этот флажок.   -  person prosseek    schedule 02.06.2013
comment
clang из транка svn компилирует ваш код.   -  person Alexander Oh    schedule 02.06.2013
comment
Это не совокупная инициализация. Это uniform инициализация с помощью конструктора initializer_list.   -  person Nicol Bolas    schedule 02.06.2013
comment
Кроме того, какую версию реализации стандартной библиотеки вы используете?   -  person Nicol Bolas    schedule 02.06.2013
comment
@NicolBolas - сообщение об ошибке показывает /usr/include/c++/4.2.1/, как я могу переключиться на правильную библиотеку?   -  person prosseek    schedule 02.06.2013


Ответы (1)


Я попробовал icc и получил ту же ошибку. Я думаю, проблема в шаблоне, а не в компиляторе. icc использует существующий шаблон /usr/include/c++/4.2.1, а реализация не полностью поддерживает c++11.

Я пробовал gcc 4.8 из порта

sudo port install gcc48

Он отлично работает

/opt/local/bin/g++-mp-4.8 -std=c++11 Iterator.cpp 

Как включить C++0x компилятора Intel C++ 12.1.2

person prosseek    schedule 02.06.2013