xcode 5.1.1 抱怨:ISO C++11 不允许访问声明

Posted

技术标签:

【中文标题】xcode 5.1.1 抱怨:ISO C++11 不允许访问声明【英文标题】:xcode 5.1.1 complaining: ISO C++11 does not allow access declarations 【发布时间】: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++ 标准库)

【问题讨论】:

【参考方案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 指令时代码会随机运行。

以上是关于xcode 5.1.1 抱怨:ISO C++11 不允许访问声明的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 5.1.1 而不是 Xcode 6 中发现问题

Xcode 抱怨视图的不可解码实例

Xcode:声明它抱怨的私有@property(Objective-C)

苹果支付能力,但 xcode 仍然抱怨

Xcode 抱怨我需要一个 iPhone 7 的图标,但没有任何地方

Xcode 抱怨:“LLDB 没有提供错误字符串。”