вот вы раст раст. вот если вы в теме спрошу. 1. в расте есть шаблоны как в ++ (нет я не фанат метапрограммирования) но мне понравился CRTP шаблон для всяких алгоритмов и т.п особенно в эмбедет заходит. я даже црц для 03 плюсов написал ибо тянуть бустовый ну это ппц. 2. вчера в ++ чате не смогли дать решение для банальной задачи: template <class integral> constexpr integral flipbit(integral x, int b) noexcept { static_assert((b > 0) || (b <= sizeof(x) * CHAR_BIT), "WTF?"); //должно работать когда b известно в компайл тайм, иначе на совести программиста return x ^ (integral(1) << b); } может ли раст такое? 3. что не хватает в плюсах, так это выполнение кода для генерации чего либо. например есть функция генерации црц таблицы, вы пишите что-то типа: const crc_data[256] = get_table(); чтобы мы в компайл тайм выполнили get_table() по элементно или еще как, и заполнили таблицу и на флэшку уже записали таблицу, а не вот это вот пишем мелкую программку, выводим на консоль, копируем в исходник.
Не, я в расте не секу. Слышал только, что его на какие-то мк завезли.
Пробовал юзать crtp, может не правильно? Компилятор мне не сообщает, если я забыл метод в дочернем классе определить. Получается молчаливый вызов нул
хз это надо код смотреть. вообще шаблоны они забавные их нужно тестировать. ибо шаблонный код с ошибкой это просто кусок кода, да его в легкую проверяют чтоб он не мешал другом коду, но там может быть например вызов методов которых просто нет. и пока не будет инстанцирования и использования именно этого куска нам об этом не скажут. на этом свинья как раз и работает, ибо ошибочная подстановка в шаблон не ошибка.
ну странный шаблон я юзал у себя в црц, я сначала просто табличный метод написал, но потом понадобилось заюзать в загрузчике а там таблица не влезала. я через шаблон навтыкал алгоритм для таблцы байта, 4 бит. и просто битовый. щас хотел написать пул обьектов с разными распределителями тоже через рекурсивный шаблон, ибо ETL мне не понравился. но блин гады на работе нагрузили по самую сурепку.
статик_ассерт не работает ибо b не явл-ся константой времени компиляции, даже если она ей явл-ся. ибо аргументы функции не констэкпр
и как я это должен сделать? шаблон написать? мне нужно чтобы в этой функции аргумент, если он известен во время компиляции прошел через статик ассерт и дал мне гарантии, я хочу вот этого: http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1045r1.html
Если только две реализации сделать. Одну с шаблонным b, а вторую с аргументом. Иначе, вроде, на сегодняшний день не получается
Обсуждают сегодня