C++
BranchLin
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Could not load the Qt platform plugin “xcb“ in ““ even though it was found.
ubuntu 16.04系统安装qt死活运行不了,提示Could not load the Qt platform plugin "xcb" in "" even though it was found.最后发现是有些库没有安装sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev解决问题...原创 2020-10-12 20:15:56 · 1101 阅读 · 2 评论 -
C++20 协程(coroutine)
C++20加入协程,其实是为了以后加入网络库而准备的。协程也是异步执行的,那么它跟std::thread有什么区别呢?区别在于协程是用户调度的,线程则是系统调度的。由于是用户态的,所以协程数量是不受限制的,想要多少就创建多少。同时C++20的协程是无栈协程,在调度切换时性能比线程快很多。基于协程的特点,基本上协程就是为了网络库而服务的了。应用开发者不建议使用协程,除非你明确知道协程的优势所在,否则不建议使用协程(std::async不香吗)。 传统异步调用 协程出现以前,异步函数也许是这么写的原创 2020-08-29 20:19:04 · 3948 阅读 · 0 评论 -
C++20 新增库功能(Library Features)
std::osyncstream现在可以使用std::osyncstream来实现输出流的多线程同步了: std::osyncstream{std::cout} << "The value of x is:" << x << std::endl; gcc 10.1未实装std::osyncstream,先记录一下 std::span std::span用法类似于std::array,数据存储方式类似于std::string_view,本身并...原创 2020-08-26 20:56:41 · 965 阅读 · 0 评论 -
C++20 指定初始值设定项(designated initializers)
struct A { int x; int y; int z = 123;};A a {.x = 1, .z = 2}; // a.x == 1, a.y == 0, a.z == 2当使用c风格指定初始值时,没有被指定的成员变量将使用默认初始化(default-initialized)。C++11的时候增加了default-initialized概念,数值的默认初始化值被设为0。如:int i{}; // i 将被初始化为0int i2; // i2 将被初始化为未知的一.原创 2020-08-26 19:15:18 · 4240 阅读 · 0 评论 -
C++20 Concepts 模版约束概念
C++20以前,模版类型约束只能通过std::enable_if、std::enable_if_t来实现。然而,std::enable_if真的是又臭又长,而且每新定义一个都要重写一遍。直接给予模版编写者极差的使用体验。Concepts引入之后,完美解决了std::enable_if又臭又长还得反复编写的问题。先看下新引入的关键字: concept C++20以前,当你想定义只针对整形的模版函数,你也许会这么写:template <typename T>auto ...原创 2020-08-26 18:53:24 · 1117 阅读 · 0 评论 -
C++20 新关键字consteval,即时函数(Immediate functions)
constexpr修饰函数时其实只是告诉编译器该函数可以按常量值的表达式去优化,但是如果函数本身不是常量值的表达式的话依然能够编译通过。C++20新增了consteval关键字,用来修饰函数时常量值的表达式,而且是强制性的。如果函数本身不是常量值的表达式的话则会编译失败。constexpr int add100_constexpr(int n) { return n + 100;}consteval int add100_consteval(int n) { return n +.原创 2020-08-26 13:00:21 · 4275 阅读 · 0 评论 -
C++20 using enum
C++20新标准可以支持using enum XXX,如:enum class rgba_color_channel { red, green, blue, alpha };using enum rgba_color_channel;我实际在gcc 10.1测试中还是不支持,这里记录一下。个人观点上说,using enum其实是一种倒退。enum class就是为了枚举能有前缀,再新增using enum感觉加快编码速度有限。无论如何,using enum必须只能写在源文件中,千万.原创 2020-08-26 12:05:21 · 1120 阅读 · 0 评论 -
C++20 Lambda表达式捕获模版不定实参(Lambda capture of parameter pack)
C++20之前Lambda表达式只能捕获固定实参,如:template <typename T>auto fun(T&& t){ return [t = std::forward<T>(t)] { };}C++20现在可以捕获模版不定长实参了:template <typename... Args>auto funs(Args&&... args){ // 传值捕获 return [...原创 2020-08-26 11:49:02 · 892 阅读 · 0 评论
分享