【发布时间】:2016-10-27 02:51:47
【问题描述】:
我在模拟器中工作。该模拟器接收 2 种模型作为输入,行为模型和结构模型。
行为模型是提供一些必需功能并需要模板参数“TIME”的任何类。
结构模型是一组模型(行为模型或结构模型)以及它们之间的交互列表。结构模型,不提供行为,因此不需要 TIME 参数。
行为模型示例:
template<typename TIME>
struct B {...};
结构模型示例:
template<typename connections, typename Ms>
struct S {
template<typename TIME>
using models=typename Ms::template type<TIME>;
...
};
主要问题是这里的“模型”。 正如那里列出的那样,每个模型都有一个 TIME 模板参数,我可以得到任意数量的 B 模型。但是,我无法将 S 模型传递给它。
我的models_tuple实现如下
template<template<typename TIME> class... Ms>
struct models_tuple {
template<typename T>
using type=std::tuple<Ms<T>...>;
};
有什么方法可以让元组同时接收带有模板参数(时间)的类和没有它的其他类? 我使用 static_assert 来验证类是否满足实现功能的要求。
【问题讨论】:
标签: c++ templates c++14 variadic-templates template-meta-programming