Использовние strand
До недавнего времени я использовал boost-1.69, но вот увидел, что по дефолту на моей ос уже доступен пакет поновее: 1.71 - и решил обновиться. И тут возникла проблема: у меня есть некоторый асинхронный многопоточный сервак работающий по принципу запрос-ответ и для избежания возможной конкуренции я использовал strand-ы, которые лежали рядом с сокетами и биндились при асинхронном чтении и/или записи. Но в 1.71, как я вижу, принцип работы со strand изменился, а с ними и сами сокеты (что стало для меня некоторой неожиданностью). Теперь сокет имеет не 1 шаблонный параметр как раньше, а 2, новый - Executor. И теперь сокет в конструкторе может принимать вместо io_context (как раньше) strand, а учитывая то, что у него есть метод get_executor, то правильно ли я понимаю, что он сейчас возвращает strand а не io_context как раньше?
Также я сравнивал примеры в документации по asio и, если раньше обекты strand использовались явно, то сейчас они лишь используются в качестве аргумента к сокету, а то и вообще убраны из примера. Правильно ли я понимаю, что теперь strand будет использоваться неявно, даже если в async_* мы не использовали bind_executor?