Re: Распечатать compile-time константу в выводе компилятора
От: rg45 СССР  
Дата: 17.01.23 10:58
Оценка: 7 (2)
Здравствуйте, koenjihyakkei, Вы писали:

K>
K>error: implicit instantiation of undefined template 'Foo<64>'
K>

K>Но мне кажется есть более простой вариант сделать это проще и сразу на месте, без объявления класса?

Можно использовать несоответствие типов формальных и фактических параметров, чтоб спровоцировать ошибку вида: "cannon convert 'A' to 'B'". Осталось только подобрать какую-нибудь функцию, желательно из стандартной библиотеки, чтоб не объявлять свои. Нарпимер printf:

http://coliru.stacked-crooked.com/a/0175402ff442e85d

   const int ParameterToPrint = 42;

   std::printf(std::integral_constant<int, ParameterToPrint>{});


MSVC: "cannot convert argument 1 from 'std::integral_constant<int,42>' to 'const char*"
GCC: "invalid user-defined conversion from 'std::integral_constant<int, 42>' to 'const char*'"
--
Отредактировано 17.01.2023 16:00 rg45 . Предыдущая версия . Еще …
Отредактировано 17.01.2023 11:02 rg45 . Предыдущая версия .
Отредактировано 17.01.2023 11:01 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.