Нужно чудо
От: johny5 Новая Зеландия
Дата: 05.07.21 06:50
Оценка:
Поштурмуем?

Нужна такая штука:

Есть такая запись PACK(a, b), где а — всегда С строка "asd", а b — любое С++ выражение.
Вот в таком контексте нужно чтобы такая запись раскрывалась как a:

static constinit const char* str = SOMETHING1(PACK(a, b));
выражается как
constexpr const char* str = a;


constinit гарантирует что инициализация статической переменной будет выполнено во время компиляции, а значит значение SOMETHING1 тоже должно быть доступно во время компиляции (т.е. constexpr функции или макросы).



А в другом, рантайм контексте:
void func(...) {}
func(SOMETHING2(PACK(a, b)));
выражается как
func(b);


В PACK, SOMETHING1 и SOMETHING2 можно писать что угодно. Могут быть макросы или С++ 20 конструкции.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.