繁体   English   中英

模板模板类专业化

[英]template template class specialization

我只是在学习模板模板类专业化。 不是大问题,详细解释一下。 根据我的理解, std::uniform_int_distribution是一个模板,而std::uniform_int_distribution<Type>是给出类型的uniform_int_distribution的完全特化。 我在专业化类模板中传递了这个,如下所示


主班

template <template <class> class Distribution,
    class Type,
    class Engine = std::mt19937>
class random_gen
{
    ....
}

班级专业化

template <class Type, class Engine>
class random_gen<std::uniform_real_distribution<Type>, Type, Engine>
{
    ...
}

发生的错误是

type/value mismatch at argument 1 in template parameter list for 'template<template<class> class Distribution, class Type, class Engine> class random_gen'

专业化仍然需要是一个模板模板参数。 你传入了一个完整的类型。 你要:

template <class Type, class Engine>
class random_gen<std::uniform_real_distribution, Type, Engine>
{
    ...
};

只是std::uniform_real_distribution ,而不是std::uniform_distribution<Type>

暂无
暂无

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

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