c++模板特例化 函数模板(非法使用显式模板参数 )

摘要:
类模板专用化:template<typenameT,intv1>classA{public:A{A=value*v1;}Ta=0;};模板<typenameT>classA<T,10>{public:A{A=value*10;}Ta=0;};template<intv1>classA<int,v1>{public:A{A=value*v1;}inta=0;};函数模板特定化:报告错误并且非法使用了显式模板参数。以下是场景:templateintaha{returna*v1*v2;}模板<intv1,intv2>inthaha<int,v1,v2>{returna*v1*v2;}可以理解,函数是多参数场景。指定类型时,即确定参数类型。没有必要将前面的模板:template<typenameT,intv1,intv2>应用到ha{returna*v1*v2;}模板intaha{returna*v1*v2;}

这里是其中一个场景, 想了解其他的请绕行。

class 模板特例化:

template<typename T, int v1>
class A
{
public:
    A(T value) {
        a = value * v1;
    }
    T a = 0;
};
template<typename T>
class A<T, 10>
{
public:
    A(T value) {
        a = value * 10;
    }
    T a = 0;
};

template<int v1>
class A<int, v1>
{
public:
    A(int value) {
        a = value * v1;
    }
    int a = 0;
};

function 模板特例化:

报错 非法使用显式模板参数 情景如下:

template <typename T, int v1, int v2>
int haha(T a)
{
    return a * v1 * v2;
}

template <int v1, int v2>
int haha<int, v1, v2>(int a)
{
    return a * v1 * v2;
}

理解是函数是多参数的情景, 当某个类型特例化, 那就是那个参数类型定了, 无需套用之前的模板:

template <typename T, int v1, int v2>
int haha(T a)
{
    return a * v1 * v2;
}

template <int v1, int v2>
int haha(int a)
{
    return a * v1 * v2;
}

免责声明:文章转载自《c++模板特例化 函数模板(非法使用显式模板参数 )》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇RBAC基于角色的权限控制个人理解基于Python3.7的robotframework环境搭建步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

高起播低延时RTSP网页无插件流媒体播放器EasyPlayerRTSPwin播放库接口调用说明

需求分析 一般对于一个播放器,应该支持如下几种显示模式: 等比例,最大化区域显示,不裁剪 等比例,最大区域显示,裁剪 拉伸显示,铺满全屏 要实现这几种显示模式。其实只要对播放控件的布局进行些许调整即可。那EasyPlayer是怎么实现的呢? 应用场景 EasyPlayer-RTSP在多年与VLC的对标过程中,积累了广泛的应用场景,EasyPlaye...

function类型(c++11)

1.c++五大可调用的对象   可调用的对象常常作为泛型算法的实参 1)函数 2)函数指针 函数名其实也是函数指针,只不过函数名是一个常量指针,它的值不能改变,只能指向该函数,不能改变它的值让它指向别的函数 void fun1(int a) { cout << a << endl; } void fun2(int a)...

linux C++ 共享库导出类

1.共享库的对外接口函数的声明必须加上extern “C”。 2.使用共享库对话接口函数生成的对象指针时在该对象未被释放之前不能关闭共享库句柄,否则会出现segmentation fault错误。 以下是一个插件式设计的示例: 1、主执行程序:main.cpp #include #include #include "SMSGamePlugin.h" int...

iOS开发-OC语言 (一)oc数据类型

分享一套以前学习iOS开发时学习整理的资料,后面整套持续更新: oc数据类型 数据类型:基本数据类型、指针数据类型 基本数据类型:数值型、字符型(char)、布尔型、空类型(void) 指针数据类型:类(class)、id 数值型:整数类型int、浮点型float、double c和oc的基本数据类型 int:声明整型变量 double:声明双精度变量 f...

flask-apscheduler重复执行两次函数

flask-apscheduler 使用方法:1.安装flask-apscheduler 2.实例化并绑定app 3.config.py 配置文件设置:id就是这个任务的编号,func 是需要执行的函数。args是函数需要的参数。trigger 有3种:date(一次性任务),cron(定时任务),interval(循环任务)interval循环间隔调度,...

驱动开发之libusb函数

一、libusb常用数据结构 libusb_device *list:设备列表 libusb_device_handle *handle:设备句柄 struct libusb_device_descriptor desc:设备描述符 struct libusb_config_descriptor conf:配置描述符 二、libusb常用API函数 1...