Type traits trong C++ là một tập hợp các lớp và hàm mẫu được sử dụng để kiểm tra và thao tác với các thuộc tính của kiểu dữ liệu tại thời điểm biên dịch. Chúng giúp lập trình viên viết mã linh hoạt và an toàn hơn bằng cách cho phép kiểm tra các thuộc tính như tính kế thừa, tính nguyên thủy, và nhiều hơn nữa.
Cách sử dụng type traits:
Kiểm tra kiểu dữ liệu:
std::is_integral>: Kiểm tra xem T có phải là kiểu số nguyên hay không.
std::is_floating_point>: Kiểm tra xem T có phải là kiểu số thực hay không.
#include <iostream>
#include <type_traits>
template T>
void checkType() {
if (std::is_integral>::value) {
std::cout << "T is an integral type.\n";
} else {
std::cout << "T is not an integral type.\n";
}
}
int main() {
checkType>(); // T is an integral type.
checkType>(); // T is not an integral type.
}
Sử dụng để tạo các hàm hoặc lớp tùy thuộc vào thuộc tính kiểu:
template T>
typename std::enable_if::is_integral>::value, void>::type
process(T value) {
std::cout << "Processing integral type: " << value << '\n';
}
template T>
typename std::enable_if::is_floating_point>::value, void>::type
process(T value) {
std::cout << "Processing floating point type: " << value << '\n';
}
Kết luận:
Type traits là công cụ mạnh mẽ trong C++ cho phép bạn kiểm tra và thao tác với các thuộc tính kiểu dữ liệu tại thời điểm biên dịch, giúp mã của bạn trở nên linh hoạt và an toàn hơn.