midnight commander steps
Она любила запах кофе по утрам. Налив в свою самую любимую кружку свежесваренный, обжигающе-горячий, ароматный и бодрящий темный напиток, что буквально пару минут назад был обычными кофейными зернами, Анна ленивой, но одновременно летящей грациозной походкой подошла к огромному стеклянному панорамному окну в потолок. Она аккуратно сделала один маленький, крошечный глоток, позволяя этой поистине божественной жидкой субстанции растечься по всему своему хрупкому телу приятным и нежным теплом. Откинув с помощью своей собственной свободной руки назад длинную прядь аспидно-черных, как само крыло ворона, непослушных волос, молодая девушка устремила свой глубокий задумчивый взор в далекую голубую даль, созерцая прекрасные открывающиеся виды просыпающегося человеческого мегаполиса. Жизнь там, за прозрачным стеклом окна, уже вовсю била бурным ключом: во все стороны активно сновали курьеры с коробками, куда-то быстро бежали питонисты, сонными мухами ползали адепты Эрланга. Здесь же, внутри ее маленького, комфортного и напоенного дремой мирика, неумолимое время словно бы полностью остановилось. Она просто стояла на ногах стоя, искренне наслаждаясь текущим моментом и глубоко думая в своей голове о том, что же именно принесет ей этот абсолютно новый, неизведанный и загадочный день.
Скорее всего, она навестит еще десяток авторов, начинающих рассказ с описания утреннего кофе, теплыми волнами растекающегося по телам молодых и не очень женщин. Анна с улыбкой погладила лежащий на столе Ремингтон 870.
"Готовьтесь, гады, - зловещая веселость охватила ее, - всех вас по айпи вычислила!"
Коснувшись экрана смартфона, Анна быстро пролистала список.
В самом низу были адреса толмачей, победителей переводческих конкурсов и любителей буржуйских имажистов. Именно благодаря их усилиям утро теперь невозможно начать с чтения переводной литературы.
Она поморщилась, вспоминая, как некто все еще "зеленеет от страха" вместо того, чтобы нормально побледнеть.
Взгляд скользнул по списку выше. Там засели авторы самопальных бытовых рассказов-слезодавилок, извергающие потоки брошенных домашних животных, позабытых стареньких родителей, злобных роботов-поработителей и любовей всех мастей вопреки всем невзгодам.
Мысленно отметив, что с этим контингентом придется повозиться - адресов стало еще больше, - Анна перешла к вершине списка.
Самые отъявленные негодяи. Авторы неудобоваримых плюсовых библиотек. Вместо поцелуя устраивающие специальную олимпиаду в вычурности конструкций.
Казалось бы, зачем пользователю выдавать чистые врапперы вроде:

struct A {};
struct B {};
template <template <typename...> class Wrapper, class ... T>
using WrapA = Wrapper<A, T...>;
template <template <typename...> class Wrapper, class ... T>
using WrapB = Wrapper<B, T...>;


Для двух случаев разработчику предлагаются два разных враппера, как хочешь это потом и используй.
Тут особенность в том, что первым передается тип контейнера.

static_assert(std::is_same_v<WrapA<std::tuple, B>, std::tuple<A, B>>
);

Ну, это и ежу понятно. А может быть, пользователю нужно протащить эту обертку внутрь класса, чтоб там применить на каких-нибудь внутренних типах?

template <??? Wrapper>
struct Config {
public:
struct C {};
using Type = Wrapper<std::tuple, C>
;
};

Конечно! Очень странно, что такой простой вопрос поставил местный ИИ в тупик. Начались какие-то дикие теории, почему это невозможно сделать. Это печально. Современные реалии требуют от современных библиотек простоты, чтоб их понимал даже ИИ.
Итого, шаблон будет выглядеть вот так:

template <template <template <typename...> class, class ...> class Wrapper>
struct Config
{...}

Картинка в картинке, элементарно! Хотя можно же как-то дружелюбней делать, грациозно, чтоб можно масштабировать или плагин сделать...
Впрочем, что́ изменнику блаженства звуки? Миги жизни сочтены.
Просмотры: 48
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти