自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (4)
  • 收藏
  • 关注

原创 C++的模板duck typing和继承的区别

但这两种还是差别较大,duck typing例子里面的函数somefunc,不光可以接受duck,任何具有sing接口的对象,都可以调用。但在调用时必须知道具体类型。在模板的世界里,具体类型是很重要的。在模板的方式里,接口更像是duck们所具有的某种属性,你只要有,那么就可以。简而言之,如果你在调用的时候就知道具体类型,那么可以用模板。如果你不知道具体类型,那么就可以用继承。

2025-02-17 15:57:33 173

原创 无用知识研究?对泛型库(如boost)扩展的思路,带一个对std::common_type的特化例子

来自一位大佬的文章,觉得挺受启发。

2025-02-04 13:39:47 138

原创 无用知识研究:std::initializer_list的秘密

这个std::initializer_list是怎么个事呢,它就是一个wrapper,一个viewer。所以std::initializer_list对象的拷贝,也是属于“浅拷贝”,保存的都是指针,不影响它们指向的数据。先说结论,用std::initializer_list初始化vector,内部逻辑是先生成了一个临时数组,进行了拷贝构造,然后用这个数组的起终指针初始化initializer_list。所以说,用initializer_list初始化,还是有优化空间的。

2025-02-02 22:16:47 603

原创 无用知识研究:对std::common_type以及问号表达式类型的理解

也就是说true : 2 : 1.0作为一个整体,它有一个类型,系统会取其“共同”的类型。用decltype()来取,比如decltype(true : 2 : 1.0)。但它是在编译期来确定的,而不是运行期来确定,所以它不管condition的。所以第一条里面,true : 2 : 1.0的值为什么是2.0呢,因为decltype对其分析的结果就是double。比如一个问号表达式true : 2 : 1.0。它有一个值,这个值是根据condition判断出来的(这个例子里是true)。

2025-01-29 23:19:17 314

原创 无用知识研究:declval()的实现和使用场景

【代码】declval()的实现。

2025-01-29 13:44:40 116

原创 过年之无用知识研究:恢复std::pair中被delete了的operator=,会怎样

把pair的源码拷贝出来,起个新名字叫MyPair。

2025-01-28 21:43:39 330

原创 过年之无用知识研究:std::is_assignable中的declval<_Dest>() = declval<_Src>()

【代码】无用的知识又增加了:assignable means?

2025-01-28 00:08:26 621

原创 过年之无用知识研究:std::is_assignable到底怎么个事?参考operator=

【代码】std::is_assignable到底怎么个事?

2025-01-27 21:28:44 194

原创 过年之无用知识研究:std::pair源码中operator=为什么被delete了,而提供sfinae版本

【代码】std::pair源码:operator=被delete了,提供的是sfinae版本。

2025-01-27 17:46:53 247

原创 判断结构体中是否含有某种类型的变量名

【代码】判断结构体中是否含有某种类型的变量名。

2025-01-05 18:54:16 107

原创 用std::void来判断结构体里是否同时含有两个成员名

【代码】用std::void来判断结构体里是否同时含有两个成员名。

2025-01-05 18:51:35 84

原创 判断成员函数是否有指定的参数

【代码】判断成员函数是否有指定的参数。

2025-01-02 14:37:14 105

原创 data driven

https://philippegroarke.com/posts/2022/data_driven_descriptor_based_generative_cpp/

2024-12-27 18:37:30 413

原创 C++模板:编译时模拟Duck Typing

return p?class foopublic:class barpublic:OK, nice!allclass foopublic:class barpublic:This:do noclass foopublic:class bazpublic:......public:m_o(o)private:public:

2024-12-25 18:05:02 812

原创 打个共鸣的响指吧:给模板成员函数添加“限制”的方法:考察shared_ptr的operator->模板成员函数

后面的是模板成员函数operator->的实例化参数,0是enable_if_t对CPoint的判断结果。shared_ptr的operator->是shared_ptr模板类里的模板成员函数。第一个CPoint就是实例化shared_ptr时的CPoint,并且operator->加上了“限制”:不能是数组(!>() 行 1493 C++

2024-12-20 14:35:31 143

原创 模板decltype在对第三方库api声明有改动时的应对(原理:sfinae)

【代码】模板decltype在对第三方库api声明有改动时的应对。

2024-12-12 18:35:07 237

原创 利用尾部返回中的std::common_type实现sfinae

这里展示的使用场景,是在已有数据结构的基础上,对不同类型的迭代器在编译时进行选择:不同的迭代器返回其值。

2024-12-12 16:53:01 221

原创 std::common_type观察

【代码】std::common_type观察。

2024-12-12 16:24:41 189

原创 宏里有多条语句时,do{}while(0);的应用

【代码】宏里有多条语句时,do{}while(0);的应用。

2024-12-11 13:49:13 179

原创 unique_ptr自定义删除器,_Compressed_pair利用偏特化减少存储的一些设计思路

LeeCarry这世界太繁杂了,我只想守护自己的纯粹25 人赞同了该文章无意间看到FOCUS:现代 C++:一文读懂智能指针595 赞同 · 12 评论文章昂,一个unique_ptr要用40字节???第一反应是作者是不是笔误多打了个0?然而细看一下不对啊,这里应该是用64位测的,一个raw pointer是8字节,那应该不是笔误,再认真细看一下就明白了。

2024-12-09 13:21:42 865

原创 项目实践:函数+enable_if

【代码】项目实践:函数+enable_if。

2024-12-03 12:51:57 115

原创 C++/Cli里重载winform的WndProc和ProcessCmdKey

不过看WndProc和ProcessCmdKey在C#上的定义,看不出System::Windows::Forms::Keys keyData居然不需要%注意,ProcessCmdKey里的第二个参数,不能用%

2024-11-28 15:54:39 329

原创 std::unique_ptr源码中构造函数的偏特化。_Unique_ptr_enable_default_t

【代码】std::unique_ptr源码中构造函数的偏特化。

2024-11-24 21:48:56 229

原创 【转】std::unique_ptr 删除器的秘密

可以看到,使用函数指针作为删除器产生的 std::unique_ptr 对象大小为 16 字节,使用 std::function 则为 40 字节,而使用无状态 lambda 和默认删除器均为 8 字节,果真没有引入额外的内存开销。我们知道,即使是一个不带任何数据成员的空类,其对象也至少要占一个字节,用以相互区别。而作者却说使用无状态的函数对象作为删除器,不会增加 std::unique_ptr 的大小。实际上,这玩意就是个模板类,和 std::pair 的概念类似,但特殊之处在于它有两个特化版本。

2024-11-23 17:35:58 1142

原创 std::unique_ptr自定义删除器(使用decltype推导类型)

【代码】std::unique_ptr自定义删除器(使用decltype推导类型)

2024-11-23 14:20:08 257

原创 构造函数为偏特化时,一些实例化的观察

【代码】偏特化的构造函数。

2024-11-18 11:17:37 117

原创 用Dism备份系统,恢复系统,并创建新“虚拟”系统

注意,新创建的vhd在加载后看不到盘符,需要到“磁盘管理”里对其分配盘符,嘉定分配到的盘符为。注意,下图中编号1是备份文件的地址,编号2是要释放的判读,就是vhd被加载之后的那个盘。,请记住这个盘符,用Dism恢复的时候要用到。创建一个vhd文件,并加载。记得勾选上添加引导。

2024-11-15 11:42:12 371

原创 构造函数是模板时,实例化的相关观察(部分代码参考自spdlog)

位置在:spdlog\fmt\bundled\core.h。

2024-11-14 17:03:28 128

原创 关于integral_constant

所以,true_type其实就是bool_constant,也就是integral_constant所以,如果有其他类继承自了true_type,那么它就拥有了value,其值为true。

2024-11-14 12:32:31 209

原创 C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型

【代码】C++模板特化实战:在使用开源库时,用特化来增加功能。

2024-11-13 13:59:29 526

原创 偏特化的一种使用方法

泛化版本中,第二个表达式直接用void,它的作用就是为了让偏特化版本利用第二个表达式进行约束。使用的时候,不要实例化第二个表达式。

2024-11-13 12:30:24 194

原创 批处理读取注册表,调用Advanced Installer15.1创建安装包

【代码】批处理读取注册表,调用Advanced Installer15.1创建安装包。

2024-11-13 12:10:20 112

原创 批处理,创建环境时,读取注册表里的值,并用mklink创建junction

【代码】读取注册表里的值,并创建link(junction)

2024-11-10 00:35:48 118

原创 fmtlib格式化时间

【代码】fmtlib格式化时间。

2024-10-22 13:20:24 172

原创 C++打开(弹出)文件夹,并将交点定位到指定的文件

【代码】C++打开(弹出)文件夹,并将交点定位到指定的文件。

2024-09-27 14:00:02 367

原创 dngrep(版本 4.2.46.0)里配置对比软件BeyondCompare

dngrep会自动探测,自动填充,不用手动。

2024-09-13 12:01:13 296

原创 dngrep(版本 4.2.46.0)里配置用NotePad++打开文件

打开之后定位在292行:

2024-09-13 11:34:25 207

原创 编译geos 3.13.0.beta1需要注意的事项

现在的代码,解压至E:\geos-3.13.0beta1。

2024-09-04 09:33:54 278

原创 饰面(veneer)

饰面(veneer)_veneer 汇编-优快云博客 模板化继承、泛型继承、Veneers的概念解析_getdlgitemtextlength-优快云博客

2024-08-03 00:45:56 251

原创 [好像不好使]一种在编译期加约束的方式,可以学习一下这个思路

【代码】一种在编译期加约束的方式,可以学习一下这个思路。

2024-08-03 00:04:46 123

架构之美 英文版 Beautiful Architecture

还需要多说吗? 经典书籍! 从国外网站上下的。

2009-12-04

计算机组成原理(唐朔飞版)

本书概念清楚,通俗易懂,书中举例力求与当代计算机结合,可作为高等院校计算机专业教材

2009-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除