Witaj Widziałem wiele takich przykładów w Cppreference.com:
std::is_class<T>
std::is_integral
I tak dalej. Wiem, że jeśli uruchomię kod, na przykład otrzymuję true
lub false
. Ale jaki jest w tym sens? np. wiedząc, że obiekt jest typu klasy czy nie?
#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';
}
Wyjście:
true
true
false
false
Rozglądałem całym dla prawdziwego przykład za pomocą tego (
is_class
,is_integral
,is_arithmetic
, ...) Ale wszystkie samouczki pokazać tylko beznadziejny przykład: tylkotrue
lubfalse
.Czy ktoś mógłby mi pomóc z małym przydatnym przykładem przy użyciu tych szablonów?
std::copy
. Co jeśli typystd::copy
są „proste”, takie jak tablicaint
lubchar
? Użyłbyśmemcpy
, prawda? Jak więc powiedzieć „Jeśli typ jest prosty, użyj memcpy, w przeciwnym razie użyj„ wolnej ”pętli?