Vì vậy this example từ: http://en.cppreference.com/w/cpp/utility/variant/visit tuyên bố kiểu chuyên ngành:Loại cấu trúc này được kế thừa từ là gì?
template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>;
nào được xây dựng như một r có giá trị ở đây:
std::visit(overloaded {
[](auto arg) { std::cout << arg << ' '; },
[](double arg) { std::cout << std::fixed << arg << ' '; },
[](const std::string& arg) { std::cout << std::quoted(arg) << ' '; },
}, v);
Tôi đang cố gắng tìm ra cách làm việc này. Loại overloaded
được thừa hưởng từ đây là gì? Nó có vẻ giống như một loạt các lambdas nhưng tôi không thấy làm thế nào mà sẽ có một operator()
. Ai đó có thể giải thích làm thế nào di sản đang làm việc ở đây?
Nếu bạn trên 10k, bạn có thể thấy tôi vừa thử câu hỏi này: https://stackoverflow.com/q/44414238/2642059 @BaummitAugen đã giúp tôi nhận ra sự kế thừa. Vì vậy, tôi nghĩ rằng tôi đang hỏi câu hỏi đúng ngay bây giờ. –