Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: С++ и баги  (Прочитано 472 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Desr

  • Автор темы
  • Участник
  • *
  • Сообщений: 131
    • Просмотр профиля
С++ и баги
« : 26 Июня 2017, 13:27:01 »
Добрый день.
Ubuntu 16.04 LTS х32, Netbeans, g++ - по умолчанию.
Пишу код:
#include <iostream>
#include <thread>
#include <future>
#include <functional>
using namespace std;

void aaa() {
    std::packaged_task<int(int, int) > sss([](int a, int b) {
        return a + b;
    });
    //std::thread tre(std::move(sss), 2, 10);
}

int main(int argc, char** argv) {


    std::packaged_task<void() > t([]() {
        std::cout << "worked";
    });

    std::future<void> result = t.get_future();
    t();

    result.get();
    cout << "yes";

    return 0;
}
Получаю вывод:
Цитировать
terminate called after throwing an instance of 'std::system_error'
  what():  Unknown error -1

Раскоментируйте строку - std::thread tre(std::move(sss), 2, 10);
Получите вывод:
Цитировать
workedyes

Как невызываемая функция может влиять на результат?
« Последнее редактирование: 26 Июня 2017, 13:47:25 от Desr »

 

Страница сгенерирована за 0.066 секунд. Запросов: 25.