Tôi muốn kiểm tra xem loại có mục nhập trong std :: numeric_limits hay không. Khi loại là một mảng - (hoặc có lẽ không phải là một số?) Tôi nhận được một lỗi trình biên dịch. Điều này ngăn cản tôi phát hiện và phân nhánh dựa trên việc kiểu được hỗ trợ trong std :: numeric_limits. Tôi sẽ đánh giá cao bất kỳ cái nhìn sâu sắc nào ai cũng muốn chia sẻ.Phát hiện chuyên môn của std :: số :: loại <T> đối với một số loại số không T
// the following provokes compiler error on Clang
// Function cannot return array type 'type' (aka 'char [20]')
static_assert(
! std::numeric_limits<char[20]>::is_specialized,
"! std::numeric_limits<char[20]>::is_specialized"
);
// invokes static assert on compile as expected
static_assert(
std::numeric_limits<char[20]>::is_specialized,
"std::numeric_limits<char[20]>::is_specialized"
);
Bạn có thể cho biết ví dụ về cách bạn muốn "phát hiện và phân nhánh" không? Tôi đoán một cái gì đó bên trong một mẫu, thay vì cho một loại cố định như 'char [20]', mà tất cả chúng ta đều biết câu trả lời? – aschepler
Xác định "phát hiện và phân nhánh". Mục đích của 'static_assert' là, thực sự, để phát hành một lỗi biên dịch nếu xác nhận không thành công. Nếu bạn cần một kết quả khác, bạn phải giải thích nó là gì. –