如何构造一个元组,其中包含的每个对象只有一个元素?

问题描述 投票:0回答:1

我有一个包含多个模板类的元组,其中只有类的模板发生变化,如下所示:

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
的构造函数(实际上不起作用)以实现运行时优化?

c++ templates metaprogramming
1个回答
0
投票

要编译构造函数,我将其更改为:

TriggerMap(ThreadPool &_tp) : m_map(T<Ts>(_tp)...) {}
© www.soinside.com 2019 - 2024. All rights reserved.