假设我有一个三个模板类型参数的类.
template<typename Transformer, typename Criteria, typename Strategy>
struct ConfiguredPipeline {};
Run Code Online (Sandbox Code Playgroud)
并在以后的实例化中使用以下类ConfiguredPipeline:
template<typename...>
struct CriteriaList
{
};
using SupportedCriteria = CriteriaList<ChiSquared, Cosine>;
template<typename...>
struct StrategiesList
{
};
using SupportedStrategies = StrategiesList<Voting>;
template<typename...>
struct TransformerList
{
};
using SupportedTransformer = TransformerList<AAGrouper11, AAGrouper15>;
Run Code Online (Sandbox Code Playgroud)
我怎样才能生成std::variant相当于:
using PipelineVariant = std::variant<
ConfiguredPipeline< ChiSquared , Voting , AAGrouper11 > ,
ConfiguredPipeline< ChiSquared , Voting , AAGrouper15 > ,
ConfiguredPipeline< Cosine , Voting , AAGrouper11 > ,
ConfiguredPipeline< Cosine , Voting , AAGrouper15 >>; …Run Code Online (Sandbox Code Playgroud) c++ templates template-meta-programming variadic-templates c++17