diff --git a/cpp/cpp_standard.md b/cpp/cpp_standard.md new file mode 100644 index 0000000..025f8d3 --- /dev/null +++ b/cpp/cpp_standard.md @@ -0,0 +1,32 @@ + +# cpp标准简记 + +## c++11 + +`c++11`这里只记录不熟悉的部分。 + +- `typedef`不支持`模板`而`using`支持。 +- 支持模板参数可变长度,使用`...`。 + +## c++14 + +- 从此标准开始,可以在`constexpr`函数中使用局部变量、循环和分支等简单语句。 +- `auto`能用于`lambda`函数传参。 +- 可以让普通函数具备返回值推导。 + +## c++17 + +- 可以在`if`和`switch`中定义临时变量。 +- 结构化绑定,`auto [x, y, z]` = `Get()`。 +- 将`constexpr`引入到`if`判断中,实现编译期间完成分支判断。 + +## c++20 + +- `auto`能用于一般函数传参。 + +# 一些语义 + +- 引用折叠,参数`T&`无论收到左值还是右值都将折叠成`T&`,参数`T&&`则保留原参数类型。 +- `std::move`和`std::forward`实现都很简单,都是只做了最基本的类型转换。 + +