Хочу обратиться с вопросом к читателям, которым еще интересно читать про мои извращения с C++ными возможностями. Недавняя статья про CRTP и прочую C++ную магию зашла, надеюсь, более-менее нормально. Хотя, как я вижу, на Хабре статьи про C++ не так уж популярны и тенденция к падению интереса к статьям про C++, имхо, прослеживается. Поэтому прежде чем браться за написание очередной статьи, хочется понять, будет ли моя работа востребована.
Суть в том, что я сейчас закончил адаптацию базирующегося на Asio диспетчера для SO-5.6. И в этой реализации полно всяких C++ных штук. Тут есть и шаблоны, и CRTP, и наследование как от шаблонов, так и не от шаблонов, включая нелюбимое многими наследование реализации.
Когда смотришь на все это со стороны, то создается впечатление хардкора и оверкилла, от которого следует избавиться раз и навсегда, а автора сего безобразия -- выгнать из профессии на мороз. Нет, серьезно. У меня вчера у самого были такие мысли, когда я в этот код погрузился впервые за полтора года.
Собственно, каждый желающий может сам составить свое впечатление. Текущий вариант реализации зафиксирован здесь. Можно обратить внимание, например, на thread_local_ptr_holder_t (стр.423), на его наследника work_thread_t (стр.466) и на его наследников work_thread_without_activity_tracking_t (стр.575) и work_thread_with_activity_tracking_t (стр.677). Либо на basic_binder_impl_t (стр.716) и его наследников binder_template_t (стр.790), binder_with_external_strand_t (стр.831) и binder_with_own_strand_t (стр.863). Не говоря уже про basic_dispatcher_skeleton_t и то, что идет дальше :)
Тем не менее, код есть, он работает. Я сделал его максимально простым и понятным, насколько смог. И в нем используются разные C++ные возможности. Причем используются не просто так, а чтобы облегчить мой труд. При том, что я далеко не самый лучший в мире разработчик и работать с реально сложным кодом у меня не хватает мозгов. И раз это помогает мне, то может быть поможет и еще кому-нибудь. Собственно об этом можно было бы и рассказать в отдельной статье.
Однако, написание статьи -- это время и труд, которые вполне могут быть направлены и на другие задачи. Поэтому, если кому-то интересно читать про подобные трюки, то дайте знать. Если никто не отзовется, то это сэкономит мне некоторое время (а время ресурс не восполняемый, к сожалению).