Re: Множественный форвардинг в std::bind
От: Кодт Россия  
Дата: 14.03.24 15:46
Оценка: +2
Здравствуйте, rg45, Вы писали:

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


Вот поэтому всегда лучше вместо std::bind писать лямбды и руками в них делать, что хочешь.
Это и нагляднее, и меньше внезапных спецэффектов.
   auto f = std::bind(foo, _1, _1);
   auto g = [foo](auto a) { foo(a, a); };


Бинд ещё и с арностью довольно свободно обращается.
   f(std::string("Hello"), 100, 200);  // сколько-угодно-арная функция же! просто возьмём только _1
   g(std::string("Hello"), 100, 200);  // ошибка компиляции, всё честно


А уж какие нечеловекочитаемые ошибки компиляции выводит бинд, по сравнению с лямбдой...
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.