假设我想定义一个依赖于某些类型的类型:
struct TimerPump{};
struct GuiPump{};
struct NetworkPump{};
template<class... Pumps>
class DispatcherT{};
using Dispatcher = DispatcherT< TimerPump, GuiPump, NetworkPump >;
我希望GUI和网络泵可以选择性使用。它们中可能需要一个、两个或者都不需要。我可以写一个预处理器宏:
using Dispatcher = DispatcherT< TimerPump
#ifdef GUI_ENABLED
, GuiPump
#endif
#ifdef NETWORK_ENABLED
, NetworkPump
#endif
>;
但我正在寻找通过特性来控制这些参数的方法。
struct Traits
{
static constexpr bool gui = true;
static constexpr bool network = false;
};
using Dispatcher = DispatcherT< TimerPump
, Traits::gui ? GuiPump : null <--- need help here
, Traits::network ? NetworkPump : null
>;
有没有一种简洁的方法可以确定传递给具有可变参数的模板的参数?