Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc 先验规则与lambda表达式_Gcc_Lambda_C++11 - Fatal编程技术网

Gcc 先验规则与lambda表达式

Gcc 先验规则与lambda表达式,gcc,lambda,c++11,Gcc,Lambda,C++11,我试图理解gcc-4.3.2和 gcc-4.5.1 给定 我知道[1a]和[2a]正确地初始化了 指针未初始化的指针 在我们的代码库中有[2b]的实例,其中有人想要 [2a]。在gcc-4.5.1[2b]中使用更好的C++0x支持,会突然触发 警告 我的问题是,在C++0x中,[2b]实际上会做什么?这是什么 与gcc-4.5.1中显示良好的[1b]的差异?[2b]是否正在执行 gcc-4.3.2和C++03是否正确 另外,我知道STL容器。警告是一个错误:表达式不能被误认为是lambda表达式

我试图理解gcc-4.3.2和 gcc-4.5.1

给定

我知道
[1a]
[2a]
正确地初始化了 指针未初始化的指针

在我们的代码库中有
[2b]
的实例,其中有人想要
[2a]
。在gcc-4.5.1
[2b]
中使用更好的C++0x支持,会突然触发 警告

我的问题是,在C++0x中,
[2b]
实际上会做什么?这是什么 与gcc-4.5.1中显示良好的
[1b]
的差异?
[2b]
是否正在执行 gcc-4.3.2和C++03是否正确


另外,我知道STL容器。

警告是一个错误:表达式不能被误认为是lambda表达式;对于定义的--std=c++0x,它也会做同样的事情

另见

我使用gcc v 4.3、4.4、4.5和4.6进行了测试。只有4.5给出了流氓警告,4.6愉快地编译代码而没有抱怨

编辑:测试的精确版本

  • gcc版本4.3.5(Ubuntu 4.3.5-3ubuntu1)
  • gcc版本4.4.5(Ubuntu/Linaro 4.4.4-14ubuntu5)
  • gcc版本4.5.1(Ubuntu/Linaro 4.5.1-7ubuntu2)警告
  • gcc版本4.6.1 20110604(预发布)(Debian 4.6.0-11)
Update我刚刚证明了4.5.1编译器(以及所有其他版本)的编译输出完全相同,无论您是否通过以下操作在命令行上指定了
--std=c++0x

g++ -o 5-0x.s --std=c++0x -S test.cpp
g++ -o 5.s    -S             test.cpp

比较
5-0x.s
5.s
没有任何区别。

PPS。欢迎大家为更好的标题提出建议。非常有趣,我不知道你们会写1b和2b。在我看来这是一个不完整的布局语法。。。这是真的吗?@Kerrek:我对标准的模糊理解是,
int*[10]
命名了一个类型,这样
[1b]
[2b]
中的括号就不会添加任何内容了。@sehe:谢谢。这是有用的。
g++ -o 5-0x.s --std=c++0x -S test.cpp
g++ -o 5.s    -S             test.cpp