Простой демо-пример
consteval int GetNum()
{
...
}
...
constexpr int a = GetNum(); // = 0
constexpr int b = GetNum(); // = 1
В С есть страшный макрос `__COUNTER__`, можно ли что-то аналогичное получить он современного C++?
Нет
Это много проблем может вызывать. Например это может быть определено в заголовочном файле. И он подключится в разные TU. И в одном а=0, b=1. А в другом b=0, a=1. Потому что порядок инициализации не определен
Это я понимаю, но такая ситуация бы устроила более чем.
вам обязательно числа по порядку, или нужно просто что-то уникальное каждый раз? будут ли у вас разные TU, которые включают этот код и притом взаимодействуют друг с другом?
https://www.youtube.com/watch?v=gI6Qtn4US9E
Да, по-порядку. Изначально было в планах использовать в разных TU, но можно переиграть. Вообще, глобально, вдруг это поможет, идея разделять некоторый ресурс на этапе компиляции. Есть софтовый таймер и менеджер этих самых таймеров (он в цикле им счетчик увеличивает), есть потребители, причем они все известны на этапе компиляции, глобальная задумка - в compile-time раздать экземпляры такого таймера из менеджера.
https://t.me/supapro/1269698
Основано на том, что одинаковые лямбды имеют различный тип?
да, плюс инжект friend-функций
Обсуждают сегодня