cxx lvalue,prvalue,xvalue,glvalue和rvalue General 每一个C++表达式(一个操作符和它的操作数,一个字面值,一个变量名等等)都代表着两个独立属性:类型+属性分类。在现代C++中
glvalue(泛左值) = lvalue… ...更多
cxx lvalue,prvalue,xvalue,glvalue和rvalue General 每一个C++表达式(一个操作符和它的操作数,一个字面值,一个变量名等等)都代表着两个独立属性:类型+属性分类。在现代C++中
glvalue(泛左值) = lvalue… ...更多
cxx 强符号弱符号 c++强符号与弱符号
编译器默认函数和初始化了的全局变量为强符号,未初始化的全局变量为弱符号,也可以通过GCC "attribute((weak))"来定义任何一个强符号变为弱符号。 GCC 中,我们也可以通过使用"attribute((weakref))"这个扩展关键字来声… ...更多
移动语义move 移动非引用返回值 没必要使用 std::move() 移动非引用返回值。 C++ 会把 即将离开作用域的 非引用类型的 返回值当成 右值(参考 值类别 vs 变量类型), 对返回的对象进行 移动语义 移动构造(语言标准);如果编译器允许 拷贝省略 拷贝省略,还可以省略这一步的构造,… ...更多
c++常用库 folly folly/Synchronized.h 简单使用 https://mp.weixin.qq.com/s/hwsEOPbSdGKP-Tc2ICUURQ class RequestHandler { folly::Synchronized<RequestQueue&… ...更多
any optional variant any optional variant std::optional, std::any, 和 std::variant 有一个共同特点:他们都支持就地构造.另外的,std::variant 还支持访问者模式. 首先,我们要了解一下这3种数据类型的功能作用.… ...更多
可变参数模板 可变参数模板 一个可变参数模板就是:一个接受可变数目参数的模板函数或模板类 可变数目的参数被称为参数包。存在两种参数包: 模板参数包:表示零个或多个模板参数 函数参数包:表示零个或多个函数参数 语法格式: 用一个省略号来指出一个模板参数或函数参数表示一个包 在模板参数列表中:class… ...更多
docker 多阶段构建 多阶段构建 Docker v17.05 开始支持多阶段构建 (multistage builds)。使用多阶段构建我们就可以很容易解决前面提到的问题,并且只需要编写一个 Dockerfile: FROM golang:alpine as builder RUN apk --… ...更多
cxx std::enable_shared_from_this std::reference_wrapper()和std::ref() std::reference_wrapper std::reference_wrapper是C++11引入的新特性,定义在 <functional> … ...更多
cxx new feature c++ new feature https://changkun.de/modern-cpp/zh-cn/02-usability/#if-switch-%E5%8F%98%E9%87%8F%E5%A3%B0%E6%98%8E%E5%BC%BA%E5%8C%96 au… ...更多
cxxFAQ FAQ Why can I access private variables in the copy constructor? The access modifiers work on class level, and not on object level. That is, two… ...更多
gcc option 常用编译参数: -Werror 所有警告变成error -Werror= 所以指定的警告变成error,比如-Werror=switch 意味着受 -Wswitch控制的警告变成error -Wfatal-errors 这个选项使得编译器在遇到第一个error后就终止编译 通过… ...更多
cxx CRTP Curiously Recurring Template Pattern 的概念 C++ 通过类的继承与虚函数的动态绑定,实现了多态。这种特性,使得我们能够用基类的指针,访问子类的实例。例如我们可以实现一个名为 Animal 的基类,以及 Cat, Dog 等子类,并通过在子类中重… ...更多
cxx std::enable_shared_from_this c++ std::enable_shared_from_this 在很多应用中,我们可能希望对象永远都存在,特别是在一些异步执行的程序中,回调函数的传入是需要保证对象指针的有效性的,所以,我们一般都是传入共享指针,我们就用到了std:… ...更多
decltype auto decltype decltype(auto) foo(auto t1, auto t2) { return t1+t2; }
int x = 1; int main() { int xx = 11; decltype(x) xr = x; … ...更多
spaceship operator operator<=> for C++20 bool operator<(const Name& other) const { //before c++11 return first_name<othe… ...更多
31 nooby cxx habits you need to ditch 31 nooby cxx habits you need to ditch
using namespace std using std endl in a loop index based for when range-f… ...更多
template auto Advantages of auto in template parameters in C++17 The template <auto> feature (P0127R1) was accepted into C++ in the ISO C++ 2016… ...更多
using 新用法 引入命名空间 可能在C++的初学者眼中,using关键字就是对常见的是这两句代码: using namespace std;和using std::cout; 当然,这也是using的最基本的使用方法。 using关键字在类继承的中的作用 (1)派生类部分覆盖基类的成员函数 在下… ...更多
类的默认函数 在C++中一个类有八个默认函数 默认构造函数; 默认拷贝构造函数; 默认析构函数; 默认重载赋值运算符函数; 默认重载取址运算符函数; 默认重载取址运算符const函数; 默认移动构造函数(C++11); 默认重载移动赋值操作符函数(C++11)。 只是声明一个空类,不做任何事情的话,… ...更多
emplace_back emplace_back({1,2})方式 https://stackoverflow.com/questions/20391632/how-to-use-stdvectoremplace-back-for-vectorvectorint #include <init… ...更多