Ale*_*uch 5 c++ templates c++11 c++17
我有多个类共享相同的公共typedef,如
struct A { using Container = std::array<A, 3>; };
struct B { using Container = std::vector<B>; };
struct C { using Container = std::array<C, 5>; };
Run Code Online (Sandbox Code Playgroud)
现在我有一个类,它获取一个只包含有效类的参数包,但它必须存储容器的元组.伪代码:
template <typename... Modules>
struct Collector
{
std::tuple<Modules...::Container> mContainers;
};
Run Code Online (Sandbox Code Playgroud)
::Container在打开包装时是否有一种优雅的方式来应用?
Wor*_*der 10
您可以使用辅助特征
template<typename T>
using ContainerOf = typename T::Container;
template <typename... Modules>
struct Collector
{
std::tuple<ContainerOf<Modules>...> mContainers;
};
Run Code Online (Sandbox Code Playgroud)
或者,您也可以在没有辅助特征的情况下内联此特征:
template <typename... Modules>
struct Collector
{
std::tuple<typename Modules::Container...> mContainers;
};
Run Code Online (Sandbox Code Playgroud)