c++ - xcode 5.1.1 提示 : ISO C++11 does not allow access declarations

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

我有一个项目可以在 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++标准库)

最佳答案

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

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

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

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

clang -std=c++0x

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

包括使用看起来是正确的修复方法。我刚刚在这里做了一些测试,它的作用正如 jar 头上所说的那样。

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

关于c++ - xcode 5.1.1 提示 : ISO C++11 does not allow access declarations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641552/

相关文章:

algorithm - find_if 的两个条件

c++ - 当std::function or lambda functions are involved时C++ 11不能推断类型

c++ - win32 中是否有任何其他控件,如 ListView,或者是否有任何方法可以删除 win32 中可用的 ListView 控件的标题区域

c++ - 带有 C++ 编译器包的 Eclipse

c++ - Windows GDI 上下文 - 函数失败并且 GetLastError() 返回 0

ios - 克隆时 cocoa pod 卡住

iphone - 编译错误与 : switch, "expected expression before"

c++ - 寻找完美数

iphone - 正在验证我的应用程序,我收到消息 "No identities are available for signing"

c++ - 获取回调函数的返回类型