小编use*_*157的帖子

为什么这个代码无法用gcc 4.8.5编译,而它用clang编译好

#include<iostream>                                                                                                                                    

using namespace std;                                                                                                                                  

int main()                                                                                                                                            
{                                                                                                                                                     
   const int k = 10;                                                                                                                                  

   // Capture k by value                                                                                                                              
   auto myl = [k] (int k) { cout << " ++k=" << ++k ; };                                                                                            

   myl(k+10);                                                                                                                                             
}  
Run Code Online (Sandbox Code Playgroud)

错误如下

lamda.cpp: In lambda function:
lamda.cpp:10:50: error: increment of read-only variable âkâ
    auto myl = [k] (int k) { cout << " ++K=" << ++k ; };
Run Code Online (Sandbox Code Playgroud)

显然我所指的是局部变量K而不是const成员K.

c++ gcc clang c++11 gcc4.8

5
推荐指数
1
解决办法
169
查看次数

限制C++标头中的命名空间污染

在我们的团队中,我们希望限制在全局范围内在标题中添加"using namespace"的做法,因为这不是一个好的做法,并且经常导致名称冲突和名称空间污染.

在gcc中是否有一种方法可以限制在编译时在头文件中添加命名空间的这种做法?

我的意思是当编译器在标题"using namespace"中看到全局范围时会收到某种警告.

谢谢

c++ gcc namespaces

4
推荐指数
1
解决办法
273
查看次数

标签 统计

c++ ×2

gcc ×2

c++11 ×1

clang ×1

gcc4.8 ×1

namespaces ×1