Tôi đã nghe ở đâu đó, sử dụng cú pháp C++ 1z mới, thật sự dễ dàng kiểm tra xem loại có được chuyển trong gói tham số mẫu variadic hay không - dường như bạn có thể làm điều này với mã gần một dòng dài. Điều này có đúng không? Các tính năng có liên quan là gì? (Tôi đã thử tìm kiếm thông qua các biểu lần nhưng tôi không thể nhìn thấy làm thế nào để sử dụng chúng trong vấn đề đó ...)Kiểm tra xem loại nào có được chuyển trong gói thông số mẫu variadic
Đây là cách tôi giải quyết vấn đề trong C++ 11 để tham khảo:
#include <type_traits>
template<typename T, typename ...Ts>
struct contains;
template<typename T>
struct contains<T> {
static constexpr bool value = false;
};
template<typename T1, typename T2, typename ...Ts>
struct contains<T1, T2, Ts...> {
static constexpr bool value = std::is_same<T1, T2>::value ? true : contains<T1, Ts...>::value;
};
Trước đó tôi không thấy phần mà bạn nói bạn không thể tìm ra cú pháp biểu thức gấp để thực hiện việc này, tôi cũng đã thêm ví dụ cho điều đó. – Praetorian