Информация об изменениях

Сообщение Re[2]: Не распарсил конструкцию с [] от 29.01.2022 20:52

Изменено 29.01.2022 20:53 T4r4sB

Re[2]: Не распарсил конструкцию с []
Здравствуйте, Pzz, Вы писали:

Pzz>Это анонимная функция (функция есть, а имени у нее нету), описанная прям по месту использования. В нонешнем C++ и не такое бывает.


Не функция, а функтор. Класс с перегруженным оператором ().
А код ТСа в ++03 был бы записан примерно так:
struct Anon {
  Socket socket;
  Anon(Socket socket): socket(socket) {}
  void operator()(std::vector<unsigned char> data) {
    auto task = Async(process1, data); // ну тут не auto понятно
    process(data);
    task.wait();

    socket.send(data, kNoCallback);
  }
}
...

socket.receive(Anon(socket));


Кстати ++03 ещё и не давал структуры с методами имплементировать внутри тела функции, требовал вытаскивать кишки наружу.
Я к тому, чтоб ТС оценил удобство.
Re[2]: Не распарсил конструкцию с []
Здравствуйте, Pzz, Вы писали:

Pzz>Это анонимная функция (функция есть, а имени у нее нету), описанная прям по месту использования. В нонешнем C++ и не такое бывает.


Не функция, а функтор. Класс с перегруженным оператором ().
А код ТСа в ++03 был бы записан примерно так:
struct Anon {
  Socket socket;
  Anon(Socket socket): socket(socket) {}
  void operator()(std::vector<unsigned char> data) {
    auto task = Async(process1, data); // ну тут не auto понятно
    process(data);
    task.wait();

    socket.send(data, kNoCallback);
  }
}
...

socket.receive(Anon(socket));

И он на самом деле именно это и означает, просто такой вот сахарок.

Кстати ++03 ещё и не давал структуры с методами имплементировать внутри тела функции, требовал вытаскивать кишки наружу.
Я к тому, чтоб ТС оценил удобство.