Tôi cần tạo một bộ n kiểu. Các loại n này là các kiểu giá trị của các loại n khác. Hãy xem xét đoạn mã này:Cách xác định một bộ giá trị của các loại giá trị từ gói tham số
#include <boost/hana.hpp>
namespace hana = boost::hana;
template<class... Types>
class CartesianProduct
{
public:
CartesianProduct(Types... args) : sets(args...) {}
hana::tuple<Types...> sets;
hana::tuple<Types...::value_type> combination; // does not work obviously... but wo can this be done?
};
Việc áp dụng này được thiết kế như vậy: tôi vượt qua lớp này một gói tham số của container các loại có thể khác nhau. Lớp này đặt các vùng chứa này vào một bộ tóan sets
. Lớp này cũng có một trường combination
là một bộ gồm nhiều phần tử như các vùng chứa đã được chuyển đến lớp. Nhưng các loại phần tử là các loại giá trị của các vùng chứa khác nhau.
Lớp này sau đó được thiết kế để tạo ra sản phẩm Descartes lười biếng của các thùng chứa được chuyển đến nó và lưu trữ kết hợp hiện tại trong combination
. Nhưng làm thế nào tôi có thể thực sự nhận được các loại giá trị của các container trong một thời trang variadic?
Tất cả các loại có 'value_type' không? – StoryTeller
Vâng, tôi làm điều này là điều kiện tiên quyết. –
Nếu bạn viết lớp sản phẩm lười biếng này, sẽ thật tuyệt vời nếu bạn có thể đóng góp lại cho Hana. Tôi đang tìm kiếm để thêm các quan điểm lười biếng, và nó có thể là một ý tưởng tốt để thực hiện 'cartesian_product' lazily của chính nó. –