模板类作为模板参数默认参数

Aleph0

今天,我尝试将模板类传递给模板参数。我的模板类std::map有四个模板参数,但最后两个是默认参数。

我能够获得以下代码进行编译:

#include <map>

template<typename K, typename V, typename P, typename A,
    template<typename Key, typename Value, typename Pr= P, typename All=A> typename C>
struct Map
{
    C<K,V,P,A> key;
};

int main(int argc, char**args) {
    // That is so annoying!!!
    Map<std::string, int, std::less<std::string>, std::map<std::string, int>::allocator_type, std::map> t;
    return 0;
}

不幸的是,我不想一直传递最后两个参数。那真的太写了。如何在此处使用一些默认模板参数?

songyuanyao

您可以使用类型模板参数包(自C ++ 11起)来允许可变参数模板参数:

template<typename K, typename V,
    template<typename Key, typename Value, typename ...> typename C>
struct Map
{
    C<K,V> key; // the default value of template parameter Compare and Allocator of std::map will be used when C is specified as std::map
};

然后

Map<std::string, int, std::map> t;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

嵌套类型作为基类的模板参数

来自分类Dev

模板功能作为模板参数

来自分类Dev

从具有默认参数的类模板继承

来自分类Dev

模板类的模板参数

来自分类Dev

模板作为类中的参数

来自分类Dev

以模板作为模板参数的功能

来自分类Dev

模板类作为模板参数

来自分类Dev

如何使用类的类型作为模板的参数

来自分类Dev

嵌套类作为模板参数

来自分类Dev

使用`std :: vector`作为模板模板参数的默认值

来自分类Dev

特性类作为模板模板参数

来自分类Dev

模板类作为模板类参数

来自分类Dev

以默认参数值作为模板参数的传递函数

来自分类Dev

使用模板类作为模板参数

来自分类Dev

std :: array作为类的模板参数

来自分类Dev

模板类作为Stl容器参数

来自分类Dev

可调用对象作为默认模板参数

来自分类Dev

C ++枚举类作为变量模板参数

来自分类Dev

具体功能作为默认模板参数

来自分类Dev

C ++-使用基类作为模板参数

来自分类Dev

使用默认参数作为较小Arity的模板模板类参数的类模板的不一致处理

来自分类Dev

模板功能作为模板参数

来自分类Dev

模板作为类中的参数

来自分类Dev

以模板作为模板参数的功能

来自分类Dev

使用自身作为参数的模板类。C ++

来自分类Dev

以子类作为模板参数继承类

来自分类Dev

模板类作为模板类参数

来自分类Dev

std :: array作为类的模板参数

来自分类Dev

C++静态模板类成员作为朋友模板函数默认参数