Xin chào, tôi đã thấy nhiều ví dụ như thế này trong Cppreference.com:
std::is_class<T>
std::is_integral
Và như thế. Tôi biết nếu tôi chạy mã ví dụ tôi nhận được true
hoặc false
. Nhưng điểm trong đó là gì? vd: biết đối tượng có thuộc loại lớp hay không?
#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';
}
Đầu ra:
true
true
false
false
Tôi đã tìm kiếm khắp nơi trên cho một ví dụ thực tế sử dụng này (
is_class
,is_integral
,is_arithmetic
, ...) Nhưng tất cả các hướng dẫn chỉ hiển thị các ví dụ tuyệt vọng: chỉtrue
hoặcfalse
.Bất cứ ai có thể giúp tôi với một ví dụ hữu ích nhỏ bằng cách sử dụng các mẫu này?
std::copy
. Điều gì xảy ra nếu các loạistd::copy
"đơn giản", như một mảngint
hoặcchar
? Bạn sẽ sử dụngmemcpy
, phải không? Vậy làm thế nào để bạn nói "Nếu kiểu này đơn giản, hãy sử dụng memcpy, nếu không thì sử dụng vòng lặp" chậm "?