[英]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.