模板模板类专业化

时间:2015-06-22 19:37:03

标签: c++ templates template-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'

1 个答案:

答案 0 :(得分:1)

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

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

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