小编jak*_*kar的帖子

在C++ 0x lambda中通过复制捕获引用变量

根据此问题的答案和注释,当通过值捕获引用变量时,lambda对象应该复制引用的对象,而不是引用本身.但是,海湾合作委员会似乎并没有这样做.

使用以下测试:

#include <stddef.h>
#include <iostream>

using std::cout;
using std::endl;

int main(int argc, char** argv)
{
    int i = 10;
    int& ir = i;

    [=]
    {
        cout << "value capture" << endl
             << "i: " << i << endl
             << "ir: " << ir << endl
             << "&i: " << &i << endl
             << "&ir: " << &ir << endl
             << endl;
    }();

    [&]
    {
        cout << "reference capture" << endl
             << "i: " << i << endl …
Run Code Online (Sandbox Code Playgroud)

c++ lambda gcc g++ c++11

32
推荐指数
1
解决办法
8210
查看次数

boost :: asio :: io_service是否保留了处理程序的顺序?

是否boost::asio::io_service保证以与通过它们给出的顺序相同的方式调用处理程序post()?我在文档中找不到任何说法.假设调用io_service::post是序列化的.

c++ multithreading boost asynchronous boost-asio

12
推荐指数
2
解决办法
2644
查看次数

禁用MSVC警告C4482是否安全?

虽然使用枚举名称限定枚举值是无效的C++ 03,但根据我的理解,它是有效的C++ 11.尽管如此,MSVC 10还会针对以下内容生成警告C4482:

enum E { A, B };

int i = E::A;  // warning C4482 (but valid C++11?)
Run Code Online (Sandbox Code Playgroud)

由于我们的大部分代码都使用C++ 11特性(特别是lambdas),因此禁用此警告似乎是安全的.我是对的,代码是有效的C++ 11吗?

注意:我没有编写有问题的代码,我宁愿不经历并更改每次出现的代码.

编辑:添加了一些相关链接.

c++ visual-studio-2010 c++11

10
推荐指数
1
解决办法
2092
查看次数