簡體   English   中英

c++11 統一初始化不適用於“g++ -std=c++0x”

[英]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 項目頁面中C++11

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM