Size: a a a

2020 March 22

FS

Flower Surgeon in pro.cxx
(хотя, reinterpret_cast бывает полезен: в той же boost mutant idiom, например)
источник

AT

Alexander T in pro.cxx
Ofee
Если кому-то интересно. Кажется, мы с @Malbu0698 заставили работать компил-тайм счётчик на C++11.

Сейчас внутренний код требует некоторого объема бойлерплейта, так что пришлось воспользоваться Boost Preprocessor. Число итераций счётчика ограничено сравнительно небольшим числом, но, полагаю, это временное ограничение и у меня есть догадки как  решить проблему

Увы, я пока не добавил в репозиторий пример и тесты, так что вот короткий пример:
#define CURIOUS_LOOPHOLED_COUNTER_LIMIT 10
...
static_assert(clc::counter() == 1, "");
static_assert(clc::counter() == 2, "");
static_assert(clc::counter() == 3, "");
...
static_assert(clc::counter() == 9, "");
static_assert(clc::counter() == 10, ""); // Failed

Работает, как указано, на Clang >= 3.9 и GCC >= 7.1. MSVC как всегда, его я не спешу указывать, он тоже работает, но явно не последовательные значения выдаёт, так что его пока не указал, для msvc 19.14:
static_assert(
       clc::counter() != clc::counter()
    && clc::counter() != clc::counter(), "");
Кажется, всё уже украдено до нас, и неоднократно. Если правильно помню, вот один из первых примеров такого лупхола (перевод): https://habr.com/ru/post/268141/
источник

FS

Flower Surgeon in pro.cxx
Alexander T
Кажется, всё уже украдено до нас, и неоднократно. Если правильно помню, вот один из первых примеров такого лупхола (перевод): https://habr.com/ru/post/268141/
очередная хвалебная песнь лупхолу, ага
источник

CD

Constantine Drozdov in pro.cxx
Надо уже петицию с требованием закрыть лупхол
источник

CD

Constantine Drozdov in pro.cxx
В частности, если результат в constexpr зависит от порядка вычисления в рамках TU IFNDR
источник

FS

Flower Surgeon in pro.cxx
Зачем его закрывать? Пусть будет что-нибудь эквивалентное по результату.
источник

FS

Flower Surgeon in pro.cxx
А само это чернокнижие устранить, очевидно.
источник

CD

Constantine Drozdov in pro.cxx
Потому что constexpr обязан быть чистым
источник

CD

Constantine Drozdov in pro.cxx
Flower Surgeon
Зачем его закрывать? Пусть будет что-нибудь эквивалентное по результату.
А что там полезное, кроме анализа агрегатов, который надо дать через кортеж?
источник

CD

Constantine Drozdov in pro.cxx
Костыли с сигнатурами функций, которые тоже надо запретить?
источник

FS

Flower Surgeon in pro.cxx
magic_get (хотя КМК он и без лупхолов работает, @antoshkka подтвердит или опровергнет)
источник

AS

Anatoly Shirokov in pro.cxx
Flower Surgeon
magic_get (хотя КМК он и без лупхолов работает, @antoshkka подтвердит или опровергнет)
Там маппинг id на тип. Без лупхола не обойтись для генерации id.
источник

FS

Flower Surgeon in pro.cxx
Anatoly Shirokov
Там маппинг id на тип. Без лупхола не обойтись для генерации id.
Ну, вот мне гутарили, что и так работает. Обманули может, конечно. Или недопоняли чего.
источник

CD

Constantine Drozdov in pro.cxx
Flower Surgeon
magic_get (хотя КМК он и без лупхолов работает, @antoshkka подтвердит или опровергнет)
Для magic_get вроде уже Антон согласился, что надо tuple_get сделать для агрегатов
источник

FS

Flower Surgeon in pro.cxx
Constantine Drozdov
Для magic_get вроде уже Антон согласился, что надо tuple_get сделать для агрегатов
Ну вот я его затем и упомянул. Всё же из первых рук хочется получить информацию.
источник

ПК

Побитый Кирпич in pro.cxx
Constantine Drozdov
Потому что constexpr обязан быть чистым
Дак он чистый, там аргументы шаблона другие
источник

AP

Antony Polukhin in pro.cxx
Flower Surgeon
magic_get (хотя КМК он и без лупхолов работает, @antoshkka подтвердит или опровергнет)
Работает и без лупхола (через structured bindings, а ещё через статическую мапу для подов)
источник

AP

Antony Polukhin in pro.cxx
Constantine Drozdov
Для magic_get вроде уже Антон согласился, что надо tuple_get сделать для агрегатов
источник

FS

Flower Surgeon in pro.cxx
Antony Polukhin
Работает и без лупхола (через structured bindings, а ещё через статическую мапу для подов)
Вот и я такое же слышал (сам в код не лазил, к сожалению). Спасибо!
источник

FS

Flower Surgeon in pro.cxx
Да, раз уж мы принесли кортеж в стандарт — давайте доведём его до ума.
источник