Вопрос в заголовке. Моих знаний не хватает для ответа на этот вопрос.
Asked
Active
Viewed 115 times
-2
1 Answers
2
Так вас устроит?
template<typename T>
requires (is_integral_v<T> && !is_same_v<bool,T>)
int digits(T d)
{
int r = 1;
while(d /= 10) ++r;
return r;
}
Harry
- 221,325
-
<source>:4:30: error: parentheses are required around this expression in a requires clause– HolyBlackCat Jul 03 '23 at 19:34 -
@HolyBlackCat Договорились :) P.S. Просто я живу с VC++, он понимает и без скобок... :) – Harry Jul 03 '23 at 19:37
-
У меня в Эклипсе не компилится. Как только добавляю вызов функции (я назвал её width) в функции main(), так вылезает ошибка:
Building target: siu.exe Invoking: Cygwin C++ Linker g++ -o "siu.exe" ./src/siu.o ./src/siu_main.o
– Sergei Filler Jul 03 '23 at 20:16
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: ./src/siu_main.o:siu_main.cpp:(.text.startup+0x13): undefined reference to `int siu::width(int)' collect2: error: ld returned 1 exit status make: *** [makefile:58: siu.exe] Error 1 "make all" terminated with exit code 2. Build might be incomplete. -
-
Вы что, вынесли шаблонную функцию в отдельный .cpp-файл??!! https://ru.stackoverflow.com/q/536546/195342 https://ru.stackoverflow.com/q/12586/195342 – Harry Jul 04 '23 at 03:17
-
Да, отдельно хедер, отдельно определение, и функция main() в отдельном файле для проверки. – Sergei Filler Jul 04 '23 at 10:50
-
is_integral. Задали бы вопрос подробнее, с примером кода — получили бы и ответ подробнее... – Harry Jul 03 '23 at 14:09static_assert, проверяющий, что типы целые посредством трейта::std::is_integral– user7860670 Jul 03 '23 at 15:28