
Комментарии 10
Добрый день. Для чего и для кого эта статья?
Что-то из рубрики: я изучаю с++ и gcc. Не более того.
Это статья для тех, кому нравится ненормальное программирование.
Что-то из рубрики "две статьи тому назад я обозначил цель, а сейчас рассказываю про строительные кубики, из которых построю (и уже давно построил) библиотеку".
Если компайл-таймовые вычисления на нормальных алгорифмах - это для вас нормальное рядовое явление, то я боюсь за ваш продакшен. Если же "да кому это надо", то и слава богу.
Но некоторые приёмы магии могут оказаться для других полезны. Буквально позавчера на RSDN кто-то спрашивал, нет ли компайл-таймовой библиотеки форматирования строк (ему нужно для продакшена). А откуда она возьмётся, если не использовать технику зависимых типов?
Как раз эти компайл-таймовые техники меня и беспокоят. Зачем вы учите этому народ? Это даже хаком назвать нельзя. Чистая алхимия. Код, которого нет в бинарнике. Если для себя, то зачем на весь мир это?
Это хаб "ненормальное программирование". Что как бы намекает!
А насчёт того, что "этого нет в бинарнике", так в бинарнике много чего нет. Но кстати сказать, сами строки в бинарнике есть, в секции статических констант. А уж как эти строки были получены - с помощью препроцессорной магии, с помощью шаблонов, - ну, да, пытливый реверс-инженер должен будет самостоятельно разбираться.
ЛОЛ. Меня дислайкают. Я просто указал на стрёмные вещи в коде. Ладно, накину вашей секте тогда разобрать деление на 0 спекулируя возможностями компилятора. Попробуйте 0 / 0 добиться 1, ваши соратники будут рады. Может кто-то будет пользоваться.
ЛОЛ, ты набежал с сентенциями "это ваше искусство нахрен никому не нужно, только зря холст и краску переводите и народ смущаете". И удивляешься, что твою критику не оценили.
Стрёмные места ты, кстати, так и не указал. У тебя были две крайности "какой-то новичок открыл для себя C++" и "какой-то колдун чего-то колдунствует". Уж определись.
То, что у этого кода автобусный фактор уходит в мнимую часть, - ну, да. Это не продакшен. Но отдельные техники из этого кода очень даже можно затащить в продакшен.
Если ты видишь конкретные изъяны, - ну, покажи их.
Если ты хочешь похвастаться библиотекой, которая умеет колдовать с пределами, - похвастайся.
А если кисо обиделос, - то добро пожаловаться.
Нене. Я оценил старания мастера! Я даже для себя отметил пытливость и старания. Но не оценил публичности сего действия: тут я это, тут то, не лезет. Ну И? Вот и спросил, для чего статья? Для кого? Она (техника) не "лечит" сообщество. Наоборот. Это как прийти на соревнование по сборке кубика Рубика с фоткой кубика, который собрал вчера. Быстро? Вчера нет. Но сегодня 0 секунд. Я победил? Я стал лучше собирать?
П.С. Знаю, есть много статей вроде: как я что-то сделал(сломал). Но там урок.
return 0;
Хорошо. Для кого люди изгаляются на всяческой демосцене? Упихивают лютую графику в один килобайт, и тому подобное? Рассказывают и показывают бекстейдж, а не просто готовый бинарь?
Твоя аналогия с фоткой кубика подобна котёнку с дверцей. Правильная же будет такая.
На соревнования можно придти с собственной монографией "теоретико-групповые основы кубика и прикладные подходы к нахождению минимального и близких к минимальному путей". И с иллюстрацией "вот у меня например такой кубик, и согласно моей теории путь будет вот такой, и смотрите-ка, этот путь действительно приводит к сборке". А дальше пусть участники примут мою монографию во внимание либо не примут, попробуют посоревноваться своими методами против моего.
Что я, на твой взгляд, сломал, - ты мне так и не показал. Ты предпочитаешь заниматься пустословием.
Я не говорил что сломал. Я утверждаю! что использование constexpr равносильно греху. Показать что есть такая фишка и не разобрать механику - плохо. Покажите ассемблерный код который получился хотя бы (фрагмент) и укажите где бонус.
Безосновательное утверждение тоже равносильно греху.
У чистых КТ-вычислений ассемблерный код состоит только в помещении константы (если она используется в РТ) в секцию констант.
Разбор какой механики нужен? Что все строковые значения вычисляются компилятором и являются параметрами типов-синглетонов? Поэтому там в -O0 гора nop-ов, а в -O1 вообще ничего не остаётся?
Ну вот пожалуйста, https://godbolt.org/z/WKxobsPba - минималистичный пример на годболте. Конкатенация и подстановка строк.
Ненормальное марковское программирование: КТ-строки и синглетоны