conditional_t和enable_if_t的实现】的更多相关文章

纹理是渲染器重要的资源,也是比较简单的资源.本文将详细讨论纹理资源的管理. 在资源管理概述中提到,资源就是一堆内存和CPU与GPU的访问权限.纹理管理在资源管理之上,要负责如何使用者一堆内存构造纹理对象,并告诉渲染器如何使用平台相关的纹理对象.下面,我们开始详细论述. 1. 纹理资源 首先纹理资源是GPU可以使用到的资源.它与Buffer资源不同的地方在于,相邻像素的插值计算中,纹理比Buffer简单并快得多,因为有相应的硬件实现.纹理资源字面意义上就像是一张像素图,但它不仅限于二维的像素的图,…
复制数据的快速方法std::copy C++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多. 比如,我写了一段下面的代码,复制100000000数据量,std::copy的性能要比前两个性能要好.   ; int *k = new int[size]; int *p = new int[size]; //const int size = 5F5E100h; DWORD t1, t2; t1…
假设有一个接收universal references的模板函数foo,定义如下: template<typename T> void foo(T&& t) { cout << "foo(T&& t)" << endl; } 如果想对某些类型做特殊处理,写一个重载版本的foo,比如想对float类型做特殊处理,就写一个接收float类型的foo: void foo(float n) { cout << &q…
目录 1 C++ 中的元编程 1.1 什么是元编程 1.2 元编程在 C++ 中的位置 1.3 C++ 元编程的历史 2 元编程的语言支持 2.1 C++ 中的模板类型 2.2 C++ 中的模板参数 2.3 模板的重载和绑定 -- 特化和实例化 3 元编程的基本演算 3.1 编译时测试 3.1.1 测试表达式 3.1.2 测试类型 3.1.3 使用 if 进行编译时测试 3.2 编译时迭代 3.2.1 定长模板的迭代 3.2.2 变长模板的迭代 4 元编程的基本应用 4.1 数值计算 4.2 类…
本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 Item 26已经解释了,不管是对全局函数还是成员函数(尤其是构造函数)而言,对universal引用的重载会导致一系列的问题.到目前为止,我也已经给出了好几个例子,如果它能表现得和我们期待的一样,这种重载也能很实用.此Item会探索如何让这种重载能实现我们所需求的行为.我们可以设计出避免对universal引用进行重载的实现,也可以通过限制参数的类型,来使…
前一篇发布出来之后,我看着阅读量还是挺多的,就是评论和给意见的一个都没有,或许各位看官就跟我一样,看帖子从不回复,只管看就行了.毕竟大家都有公务在身,没太多时间,可以理解.不过没关系,我是不是可以直接想象为我写的东西还挺不错的,KeKe--. 这一篇介绍一下源代码 ./src/uvw/emitter.hpp 里的东东.由于代码量实在比较大,我就折叠起来了,不然各位看官手指头滚上滚下的,太累了.之后我就写到哪儿贴哪儿的代码,注个大概源代码的位置,有兴趣自己打开源代码对照看看,是不是看的就比较舒服点…
咱们继续看uvw的源码,这次看的东西比较多,去除底层的一些东西,很多代码都是连贯的,耦合度也比较高了.主要包括下面几个文件的代码: underlying_type.hpp resource.hpp loop.hpp handle.hpp stream.hpp tcp.hpp 代码我就不都贴出了,说到哪儿贴哪儿的代码.如果有兴致可以打开源码对照看看.另外代码也比较多,我先大概分析下源码的结构,再说一些细节的和项目基本无关的东西. 源码很好玩 1.保存自己的share_ptr--通过这个问题来通览一…
     模板是C++中很重要的一个特性,利用模板可以编写出类型无关的通用代码,极大的减少了代码量,提升工作效率.C++中包含类模板.函数模板,对于需要特殊处理的类型,可以通过特化的方式来实现特定类型的特殊操作.        最近工作中,需要处理CONT<TYPE>这种复合类型和T这种自定义类型的模板特化,因为CONT类型有五种左右需要特殊处理,其余的可以用默认处理函数,TYPE的具体类型有上千种,但是TYPE类型不涉及不同的操作.      方案一:采用两个模板参数 template &l…
867 人赞同了该文章 C++的新标准又双叒叕要到来了,是的,C++20要来了! 图片来源:udemy.com 几周前,C++标准委会历史上规模最大的一次会议(180人参会)在美国San Diego召开,这次的会议上讨论确定哪些特性要加入到C++20中,哪些特性可能加入到C++20中.在明年二月份的会议当中将正式确定所有的C++20特性. 这次会议讨论的提案也是非常之多,达到了创纪录的274份,C++20的新特性如果要一一列出的话将是一份长长的清单,因此本文将只评论大部分确定要加入和可能加入到C…
在C++中,各种数值类型的转化是C++编译过程中警告的主要来源,但是,很多时候,我们需要使用各种数值类型,例如我们用数组的某一位表示大小为对应序号的值,这种情况下,经常会涉及多种数值类型.根据C++ Programming Language中的建议,在数值类型转换时,使用narrow_cast来实现运行时安全,这里给出C++14版本的实现. // there is no implicit conversion from Source to Target template <typename Ta…