小编Har*_*ldo的帖子

未调用函数会影响代码结果

在这里挠头。在下面的代码,则该函数f在3种不同的方式通过使用task_lambda()task_bind()task_thread()。在main()但是,只有功能task_lambda()task_bind()实际调用和执行。但是,如果您敢于取消注释#if 0代码块,以使未使用的功能task_thread()不再存在于代码中,则main中的代码现在将引发异常(-1)system_error。

这是代码:

#include <iostream>                                                                                                                                                                                         
#include <cmath>
#include <thread>
#include <future>
#include <functional>
#include <unistd.h>

// unique function to avoid disambiguating the std::pow overload set
int f(int x, int y) { return std::pow(x,y); }

void task_lambda()
{
    std::packaged_task<int(int,int)> task([](int a, int b) {
        return std::pow(a, b);
    }); 
    std::future<int> result = task.get_future();

    task(2, 9); 

    std::cout << "task_lambda:\t" << result.get() << '\n';
}

void …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
1
解决办法
125
查看次数

标签 统计

c++ ×1