std库中的一个SFINAE实例
GCC std库实现中的一个SFINAE实例 Part 1. 源代码 在std::tuple的swap函数上有这样一个noexcept声明: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 作用是检测tuple内的每一个元素是否是不抛出可交换的,这里…
|
121
|
|
|
2025-3-25 21:25
787 字
|
5 分钟
C++ Memory Order
前言 原子变量是C++解决多线程中数据竞争、线程同步的一种方式,而内存序(Memory Order)则是使用原子变量前的一个重要知识。 在Luyu Huang's Blog的文章中,已经对C++的内存序做出了比较清晰易懂的解释,本文的目的旨在提炼其文章中的核心思想,补充其文章中所提到的不足和发表一点作者自己的看法与感想。 原子变量 在使用原子变量时…
|
525
|
|
|
2024-12-12 1:11
4003 字
|
21 分钟
分享一下好的技术文章(持续更新)
计算机体系结构 计算机体系结构.天外飞仙.知乎 GIS GIS.yangqiao.知乎 基于geopandas的空间数据分析——数据结构篇.费弗里.博客园 C++ C++语言 洞悉C++函数重载决议.里缪.知乎 多线程 谈谈 C++ 中的内存顺序 (Memory Order).http://luyuhuang.tech 协程 C++20协程原理和应…
|
490
|
|
|
2024-12-10 22:09
120 字
|
1 分钟内
在使用Boost.Hana.members中遇到的问题及解决方案
0. Boost.Hana.members members是定义在namespace boost::hana下的一个变量,拥有类型members_t。 member_t内重载了运算符<Object> operator(Object&&),接收特定类型的结构体,并返回hana::tuple<...Xn>,利用该…
|
772
|
|
|
2024-8-22 13:49
460 字
|
4 分钟
中译中:将Cppreference上的部分词条再译为中文
CPP/语言/重载决议 在这一页面,有着以下的词条: 构造函数候选的额外规则: 在构造类型 D 的对象时,如果满足以下所有条件,那么从类类型 C 继承的首个形参类型是“到 P 的引用”的构造函数(包括从模板实例化的此类构造函数)会从候选函数集合排除: 实参列表只有一个实参 C 引用关联于 P P 引用关联与 D 该词条比较难以理解,牵扯的概念较多,…
|
801
|
|
|
2024-8-02 17:46
1787 字
|
9 分钟
C++23’s New Feature: Deducing this
C++23's New Feature: Deducing this 0. 引言 C++23带来了新的语法支持:Deducing this,作为C++23中的重要特性,使C++程序的编写更加简洁和灵活,但也带入了一定的理解成本。本篇文章旨在介绍该特性的语法、基本使用与一些使用场景。 本文中所有示例代码的编译及运行环境:Windows, clang+…
|
907
|
|
|
2024-7-31 22:22
1936 字
|
11 分钟
C++20: Coroutine学习笔记
C++20: Coroutine Part 0. 引言 C++20引入了新的语言特性:协程(Coroutine),为C++的异步程序编写提供了新的范式,C++20对协程的设计提供了大量的可定制点,提高了协程程序的灵活度,但也加大了对协程程序的理解难度,本篇文章旨在带领读者了解协程的基本使用、相关概念、<coroutine>头文件的介绍。…
|
767
|
|
|
2024-7-31 19:22
2089 字
|
11 分钟
C++template模板元编程浅析:std::tuple
Intro.std::tuple的使用场景不算很多,但是std::tuple的实现手法中却蕴含了模板元编程的很多思想和方法,下面我们来浅析std::tuple的实现和其背后的“黑魔法”。 Part 1. 用例我们先来了解std::tuple的使用:auto t = std::tuple {1, 2.0f, "abc"};std::cout <…
|
598
|
|
|
2024-7-05 15:16
1364 字
|
6 分钟