繁体   English   中英

C++中的模板模板参数为class定义

[英]Template template parameter in C++ for class definition

我想做能够做这样的事情:

template <...>
class A
{
   B<c> val;
   c test;
};

A<std::vector<int> > test;

这样我就可以在A class 中重复使用我的模板模板参数。

这可能吗?

我已经设法使用这样的模板规范让它工作:

#include <vector>

template <typename T>
class A 
{

};

template<template<typename > class B, typename C>
class A<B<C> >
{
    B<C> vec;
    C val;
};

A<std::vector<int> > a;

有没有更好的办法?

提取内部类型的常用方法是使用以下类型特征

template <typename T> struct inner_param;

template <template <typename, typename...> class C, typename T, typename ...Ts>
struct inner_param<C<T, Ts...>>
{
    using type = T;
};

然后只是:

using IntVector = vector<int>;
inner_param< IntVector >::type a;
a = 42;
cout<< a << endl;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM