สวัสดีฉันเคยเห็นตัวอย่างมากมายใน 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 มิฉะนั้นจะใช้วง" ช้า "?