Привіт, я бачив багато подібних прикладів на Cppreference.com:
std::is_class<T>
std::is_integral
І так далі. Я знаю, якщо я запускаю код, наприклад, отримую true
або false
. Але який сенс у цьому? наприклад, знаючи об’єкт типу класу чи ні?
#include <iostream>
#include <type_traits>
struct A {};
class B {};
enum class C {};
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_class<A>::value << '\n';
std::cout << std::is_class<B>::value << '\n';
std::cout << std::is_class<C>::value << '\n';
std::cout << std::is_class<int>::value << '\n';
}
Вихід:
true
true
false
false
Я шукав у всьому для реального прикладу використання цього (
is_class
,is_integral
,is_arithmetic
...) Але все підручники показують тільки безнадійну приклад: тількиtrue
чиfalse
.Чи може хто-небудь допомогти мені з невеликим корисним прикладом, використовуючи ці шаблони?
std::copy
. Що робити, якщо типиstd::copy
"прості", як масивint
абоchar
? Ви б використовувалиmemcpy
, правда? Так як ви скажете "Якщо тип простий, використовуйте memcpy, інакше використовуйте" повільний "цикл"?