模板模板类专业化
template template class specialization
本文关键字:专业化 更新时间:2023-10-16
我只是在学习模板模板类专业化。详细解释没什么大问题。根据我的理解,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>
。
相关文章:
- 如何使用默认参数等选择模板专业化
- 模板化建造师专业化
- 类模板的成员功能的定义在单独的TU中完全专业化
- 部分专业化和嵌套模板
- 模板专业化可以进入我的.cpp吗?
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 部分专业化和对标准::void_t<>的需求
- "专业化不参与超载"
- 特定好友功能专业化
- 是否可以混合使用SFINAE和模板专业化?
- 为什么在班级专业化上会出现错误?
- enable_if如何帮助选择类模板的专业化?
- std::initializer_list可以专业化吗?
- 派生类中纯虚拟基方法的专业化
- "expected a '>'"类模板专业化?
- Clang不会编译GCC会编译的模板专业化
- 我可以用clang AST从模板专业化中获得默认的模板参数吗
- 函数模板部分专业化-有什么解决方法吗
- 类模板的编译错误,但其专业化除外
- 我应该声明我的函数模板专业化还是定义它们就足够了