我有一个包含多个模板类的元组,其中只有类的模板发生变化,如下所示:
template<template<class> class T, class ...Ts>
class TriggerMap;
template<template<class> class T, class ...Ts>
class TriggerMap<T, std::tuple<Ts...>>
{
public:
TriggerMap(ThreadPool &_tp) : m_map(_tp) {}
~TriggerMap() = default;
private:
using TriggerMapImp = typename tuple_apply_template<T, Ts...>::type;
TriggerMapImp m_tup;
};
与
tuple_apply_template
:
template<class, class>
struct tuple_prepend;
template<class T, class ...Ts>
struct tuple_prepend<T, std::tuple<Ts...>>
{
using type = std::tuple<T, Ts...>;
};
template<template<class> class T, class ...Ts>
struct tuple_apply_template;
template<template<class> class T, class _T, class ...Ts>
struct tuple_apply_template<T, _T, Ts...>
{
using type = typename tuple_prepend<T<_T>, typename tuple_apply_template<T, Ts...>::type>::type;
};
template<template<class> class T, class _T>
struct tuple_apply_template<T, _T>
{
using type = std::tuple<T<_T>>;
};
我想用对象引用构造我的对象,在本例中是对象
ThreadPool
,如何以有效的方式更改TriggerMap
的构造函数(实际上不起作用)以实现运行时优化?
要编译构造函数,我将其更改为:
TriggerMap(ThreadPool &_tp) : m_map(T<Ts>(_tp)...) {}