博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
std::enable_if 和enable_if_t 搭配 is_same编译时期类型检查
阅读量:4209 次
发布时间:2019-05-26

本文共 1199 字,大约阅读时间需要 3 分钟。

class AT{public:    void PrintT(){        std::cout << "PrintT" << std::endl;    }    int ati;};int main() {    std::enable_if_t
::value,AT> ati; // 获取AT类 c++ 14 // 或者 // std::enable_if
::value,AT>::type ati; // c++ 11 ati.PrintT();}

具体的使用enable_if 做模版函数的编译时期的判断:

https://blog.csdn.net/jeffasd/article/details/84667090
https://www.jianshu.com/p/a961c35910d2

模版实例化代码:

typename std::enable_if
::type t; //正确typename std::enable_if
::type; //可以通过编译,没有实际用处,推导的模板是偏特化版本,第一模板参数是true,第二模板参数是通常版本中定义的默认类型即voidtypename std::enable_if
::type; //无法通过编译,type类型没有定义typename std::enable_if
::type t2; //同上

typename std::enable_if::type; //无法通过编译,type类型没有定义

可以用在类型检查上面。

template 
::value >::type >

enable_if and is_same

class Object {
public: bool to_string() {
return true; }};bool ChangeToString(Object* o) {
return o->to_string();}#define DEF_IS(check_type, return_type) \ template
\ typename std::enable_if
::value, return_type>::type// stringDEF_IS(std::string, bool) is_type(Object* obj) {
return ChangeToString(obj);}
你可能感兴趣的文章
c++boost中的asio介绍
查看>>
UNIX网络编程卷1:套接字联网API-第一部分:简介
查看>>
UNIX网络编程卷1:套接字联网API-第一部分:下载unpv13e编译运行
查看>>
UNIX网络编程卷1:套接字联网API-第2章:传输层 TCP/UDP和SCTP
查看>>
使用netstat调试TCP应用
查看>>
UNIX网络编程卷1:套接字联网API-第2章:端口号和查看linux常用服务对应端口号
查看>>
UNIX网络编程卷1:应用进程写数据到一个TCP套接字中发生的事情
查看>>
UNIX网络编程卷1:套接字联网-第3章:套接字编程-套接字地址结构和值结果参数
查看>>
UNIX网络编程卷1:套接字联网-第3章:套接字编程-常用函数
查看>>
关于ubuntu中文件类型没有颜色区分的配置文件修改
查看>>
UNIX网络编程卷1:套接字联网-第3章:套接字编程-readn,writen函数
查看>>
UNIX网络编程卷1:套接字联网-第4章:基本TCP套接字编程1
查看>>
UNIX编程专题-POSIX信号
查看>>
UNIX编程专题-core文件的生成和调试
查看>>
UNIX高级环境编程:源码(apue)下载 编译和运行
查看>>
UNIX编程专题-可重入函数和不可重入函数
查看>>
UNIX高级环境编程-信号相关函数笔记
查看>>
unix编程专题-信号机制使用实例
查看>>
UNIX网络编程卷1:套接字联网-第5章:TCP客户/服务器程序示例
查看>>
UNIX编程专题-wait和waitpid详解
查看>>