Множественный форвардинг в std::bind
От: rg45 СССР  
Дата: 13.03.24 15:58
Оценка: 92 (5) +1
Привет, всем!

Споткнулся о прикольную багу фичу — множественный форвардинг (а значит, и множественное перемещение, иногда) внутри std::bind:

http://coliru.stacked-crooked.com/a/041bd611b4bd1924

#include <iostream>
#include <string>
#include <functional>

int main()
{
   using std::placeholders::_1;

   auto foo = [](auto a, auto b) { std::cout << "{ "<< a << ", " << b << " }" << std::endl; };

   auto f = std::bind(foo, _1, _1);

   f(std::string("Hello")); // -> { , Hello }
}


Почему так сделано — это понятно. Но ошибку искал часа полтора. Так что, будьте осмотрительны, остерегайтесь выходить на болота в ночное время ну, в общем, вы поняли.
--
Не можешь достичь желаемого — пожелай достигнутого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.