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 truehoặ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ỉtruehoặ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ảnginthoặ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 "?