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:声明它抱怨的私有@property(Objective-C)