T.48: If your compiler does not support concepts, fake them with enable_if

T.48:如果你的编译器不支持concepts,使用enable_if模仿它

Reason(原因)

Because that's the best we can do without direct concept support. enable_if can be used to conditionally define functions and to select among a set of functions.

因为这是不能活动concept的直接支持时可以采用的最佳做法。enable_if可以用于有条件定义函数并从一组函数中进行选择。

Example(示例)

template<typename T>
enable_if_t<is_integral_v<T>>
f(T v)
{// ...
}// Equivalent to:
template<Integral T>
void f(T v)
{// ...
}

Note(注意)

Beware of complementary constraints. Faking concept overloading using enable_if sometimes forces us to use that error-prone design technique.

避免互补约束。使用enable_if模拟概念重载有时会要求我们使用容易出错的设计技术。

Enforcement(实施建议)

???

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#t48-if-your-compiler-does-not-support-concepts-fake-them-with-enable_if

新书介绍

《实战Python设计模式》是作者最近出版的新书,拜托多多关注!

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

C++核心准则T.48:如果你的编译器不支持concepts,使用enable_if模仿它相关推荐

  1. 存储过程能用if not exist_C++核心准则T.48:如果不能用概念,用enable_if

    T.48: If your compiler does not support concepts, fake them with enable_if T.48:如果你的编译器不支持concepts,使 ...

  2. php 语法 条件变量,C ++核心准则:注意条件变量的陷阱

    今天,我写了一篇关于条件变量的恐怖文章.您应该意识到条件变量的这一问题.C ++核心准则CP 42仅声明:"不要无条件等待". 等待!条件变量支持一个非常简单的概念.一个线程准备一 ...

  3. modbus软件开发实战指南_C++核心准则?GSL:指南支持库

    GSL: Guidelines support library GSL:指南支持库 The GSL is a small library of facilities designed to suppo ...

  4. 开源压缩算法brotli_Google的Brotli压缩算法,C ++核心准则以及更多新闻

    开源压缩算法brotli 在本周的开源新闻综述中,我们将介绍Google的Brotli压缩算法,适用于GitHub的Classroom,C ++ Core Guidelines等! 2015年9月20 ...

  5. 中国首个芯片大学最快于本月底在南京挂牌;​华为方舟编译器正式支持 C 语言;Ora2Pg v21.0 发布|极客头条

    整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内 ...

  6. 完全开源!华为方舟编译器正式支持C语言了,并开放鸿蒙教程!

    点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 来自:http://www.kkj.cn/ 2019年8月底,华为方舟编译器(OpenAr ...

  7. cmake:通过CMAKE_CXX_COMPILE_FEATURES判断编译器是否支持C++11

    以前在cmake中要判断一个编译器是否支持C++11挺麻烦的,要根据编译器的类型和版本来判断. 从cmake 3.1版本开始增加了一个CMAKE_CXX_COMPILE_FEATURES变量用于获取当 ...

  8. C 如何判断编译器是否支持C90 C99?

    参考:<C Primer Plus>,Stephen Prata著,姜佑译. ANSI/ISO C标准 美国ANSI成立委员会X3J11,于89/90年,99年,11年,发布C标准:C89 ...

  9. C++核心准则C.43:保证(值类型)可拷贝类有默认构造函数

    C.43: Ensure that a copyable (value type) class has a default constructor C.43:确保(值类型)可拷贝类有默认构造函数 Re ...

最新文章

  1. 算法er的尽头会是To B吗?
  2. 035_jQuery Ajax的ajaxSetup方法
  3. P9 线性系统状态空间分析-《Matlab/Simulink与控制系统仿真》程序指令总结
  4. zynqpl端时钟_第十二章 ZYNQ-MIZ702 PS读写PL端BRAM
  5. 分享一个javascript alert精简框架
  6. sql 触发器的常用语句(转)
  7. [leetcode]151.翻转字符串里的单词
  8. 数据库迁移mysql到sqlserver_数据库迁移(sqlserver至mysql)
  9. php点击按钮弹窗提示,WEB表单,给出弹出框提示,点击按钮报错
  10. 【华为云技术分享】大数据实践解析(下):Spark的读写流程分析
  11. python创建二维数组的方法_Python创建二维数组的正确姿势
  12. Redis——持久化RDB和AOF
  13. 简述linux开机启动进程,Linux系统启动流程简述
  14. 解决AD不能复制粘贴
  15. ogg怎么转换成mp3格式?
  16. 大规模WebGL应用引发浏览器崩溃的几种情况及解决办法
  17. 如何用计算机还原魔方,魔方复原
  18. 通过httpurlconnection发带图片的文件
  19. OpenCV开发笔记(三十四):红胖子带你小白式编译Qt+openCV3.4.1+opencv_contrib(全网最简单最强,可读性最高,没有之一)
  20. K8S的节点报 “NotReady”错误

热门文章

  1. 微星主板黑苹果_小白安装黑苹果应该要知道的事情
  2. Unity VFX学习系列 —— Operators 详细说明
  3. 芝麻授权 java调用_【java】手机浏览器怎么调用支付宝进行用户授权呢?
  4. ESP8266编译、烧机
  5. 波恩大学癫痫脑电和波士顿儿童医院脑电信号数据集下载
  6. jquery 添加插入元素技巧前面和后面
  7. 程序员进阶知识点!java链表ListNode
  8. 计算机或与非门原理,计算机逻辑电路中,与或门,或非门,异或非门,异或门的性质,在线等!!!!...
  9. CarSim 2022软件
  10. EXCEL公式测试使用Substitute