[英]gem install nmatrix - You need a version of g++ which supports -std=c++0x or -std=c++11
[英]c++11 uniform initialization doesn't work with "g++ -std=c++0x"
我有一個聲明這個公共方法的類:
virtual std::vector<float> operator()(const std::vector<float>& = {});
它使用統一初始化(這里只是{}
),這是來自 c++11 的一個特性。 使用clang++ -std=c++11
編譯時,這不會給我帶來任何問題。 但是當我使用g++ -std=c++0x
我得到了這個:
error: expected primary-expression before '{' token
-std=c++0x
選項不是應該給我帶來 c++11 支持嗎?
使用標准 C++ 聲明方法時,編譯器不會給我任何錯誤,如下所示:
virtual std::vector<float> operator()(const std::vector<float>& = std::vector<float>());
我在 Ubuntu 12.04 上使用 g++ 4.6
來自GCC 4.7 發行說明:
G++ 現在接受
-std=c++11
、-std=gnu++11
和-Wc++11-compat
選項,它們等價於-std=c++0x
、-std=gnu++0x
、和-Wc++0x-compat
,分別。
GCC 4.8.1是 2011 C++ 標准(以前稱為 C++0x)的第一個功能完整的實現。
壞消息,您需要升級編譯器才能獲得 C++11 支持。
GCC 4.6 不支持所有的 c++11 特性:
GCC 為即將推出的 ISO C++ 標准 C++0x 提供實驗性支持。 可以使用 -std=c++0x 啟用此支持。
我建議您升級到最新的 GCC 版本,並使用標志-std=c++11
甚至-std=c++14
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.