Potrzebuję zbudować krotkę n typów. Te typy n są typami wartości n innych typów. Rozważmy następujący fragment:Jak zdefiniować krotkę typów wartości z zestawu parametrów
#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?
};
Zastosowanie to ma tak: Mijam tej klasy paczkę parametru pojemnikach ewentualnie różnych typów. Klasa umieszcza te pojemniki w krotce sets
. Klasa ma także pole combination
, które jest krotką tylu elementów, ile kontenerom przekazano klasie. Ale typy elementów są typami wartości różnych pojemników.
Ta klasa jest przeznaczona do leniwego budowania kartezjańskiego produktu przekazywanych do niej pojemników i przechowywania aktualnej kombinacji w combination
. Ale w jaki sposób mogę rzeczywiście dostać się do typów wartości kontenerów w wariadowy sposób?
Czy wszystkie typy mają "typ wartości"? – StoryTeller
Cóż, robię to jako warunek wstępny. –
Jeśli napiszesz tę leniwą kartezjańską klasę produktu, byłoby wspaniale, gdybyś mógł wnieść ją z powrotem do Hany. Chciałbym dodać leniwy widok i może być dobrym pomysłem samodzielne wdrożenie 'cartesian_product'. –