2013-06-01 108 views
0

我想在mac上用clang ++編譯C++ 11列表集合初始化。鏗鏘集支持Mac OS X上的聚合初始化

#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++-mp-3.1 -v 
clang version 3.1 (branches/release_31) 
Target: x86_64-apple-darwin11.4.2 
Thread model: posix 

我得到了相同的結果試圖用鏗鏘++。什麼可能是錯的?

clang's support of C++ 11 lambda

+0

'-std = C++ 11' ...... – 2013-06-01 22:02:18

+0

你有使用' - std = C++ 11'或'-std = C++ 0x'標誌? –

+0

@ H2CO3:我有這個標誌。 – prosseek

回答

0

我試過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 

How to turn on C++0x of Intel C++ Compiler 12.1.2