【问题标题】:xcode 5.1.1 complaining: ISO C++11 does not allow access declarationsxcode 5.1.1 抱怨:ISO C++11 不允许访问声明
【发布时间】:2014-08-29 18:18:43
【问题描述】:

我有一个在 Xcode 4.6.3 上构建和运行良好的项目。 但它不在 Xcode 5.1.1 上。

这是我得到的唯一错误,一百次。

“ISO C++11 不允许访问声明;请改用 using 声明”。

基本上它希望我从:

typedef Something<MType>::Index Index;    
Something<MType>::N;

typedef Something<MType>::Index Index;    
using Something<MType>::N;

为什么会这样?

如果我像 Xcode 所说的那样“解决它”,最终的应用程序会随机运行。

是否可以像在 4.6.3 一样在 Xcode 5.1.1 上构建这个项目? (换句话说:更改项目设置,但保持代码不变)

AFAIS,两个 Xcode 版本的 C++ 标志具有相同的值。
C 语言方言 = GNU99 [-std=gnu99]
C++ 语言方言 = GNU++11 [-std=gnu++11]
C++ 标准库 = libc++(支持 C++11 的 LLVM C++ 标准库)

【问题讨论】:

    标签: c++ xcode c++11 xcode4 xcode5


    【解决方案1】:

    这看起来像是对编译器的故意改动:

    http://llvm.org/viewvc/llvm-project?view=revision&revision=183882

    标准机构说:“访问声明在 1998 年的标准中已被弃用,并且与 using 声明相比没有任何好处。它们应该在 C++0x 中删除。”

    而且我无论如何也找不到恢复到较旧的(不符合标准的)C++11 行为。我有一半期望这会起作用:

    clang -std=c++0x

    但是,事实并非如此。你得到同样的错误。

    包括 using 看起来是正确的解决方法。我刚刚在这里做了一些测试,它按照锡上所说的做了。

    可能不是您想听到的,但我认为您应该研究一下为什么在使用 using 指令时代码会随机运行。

    【讨论】:

    • +1,尤其是对于“我认为您应该研究一下为什么在使用 using 指令时代码会随机运行。
    猜你喜欢
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2015-04-25
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多