2022 C++模板基础知识
-
std::remove_cv
- 模板用于获取类型T,而没有const和volatile限定。如果T不带const和volatile限定,则返回布尔值true,否则返回false。
- typedef remove_cv::type A, A is Same = int
- typedef remove_cv<const volatile int&>::type D, D is Same = int
- https://vimsky.com/examples/usage/stdremove_cv-in-c-with-example.html
-
std::forward
- 通常是用于完美转发的,它会将输入的参数原封不动地传递到下一个函数中。
- https://zhuanlan.zhihu.com/p/92486757
-
std::memory_order_relaxed
- C++11多线程 内存序,指令的执行顺序
- memory_order_relaxed 无fencing作用,cpu和编译器可以重排指令
- https://baichao0817.blog.youkuaiyun.com/article/details/109319467 六种内存序
-
理解std::move和std::forward
- c++11中提供了std::move()来将左值转换为右值引用,从而方便的使用移动语义。move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存拷贝。
c++中所有容器都实现了move语义,方便我们实现性能优化。 - https://blog.youkuaiyun.com/f110300641/article/details/83477160
- c++11中提供了std::move()来将左值转换为右值引用,从而方便的使用移动语义。move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存拷贝。