- 在C++14中,auto可以对返回值进行推导,而C++11中,需要后置返回值,例如:
auto func(int a, int b)
{
return a + b;
}//返回值推导为int类型 C++14
auto func(int a, int b) ->int
{
return a + b;
}//C++11
- 当多个return语句时,需要保证返回值为同一类型
- C++14中,lambda支持对参数的类型推导,类似于模版,而C++11中需要指定参数类型,例如:
auto fn = [](auto a, auto b)
{
return a + b;
}//返回值推导为int类型 C++14
auto fn = [](int a, int b)
{
return a + b;
}//C++11
- 新增了捕获列表初始化,仅拷贝捕获,例如:
int a = 10;
auto fn = [a = a * 10]{ return a; }//函数体内部的a=100
变量模板
- C++14中新增了变量模板,需注意的是,变量模版仅支持基础数据类型的实体,例如:
templateconstexpr函数T a = T(100) template T func(T b) { return a * b; } func(10);//返回值:1000 func(3.1415926);//返回值:314.15926
- C++14里对constexpr函数放松了条件,在C++11中
被修饰的函数必须有返回值,只能有一条单一的返回语句
constexpr int func(int a)
{
return a * 10;
}//C++11
constexpr int fucn(int a)
{
int b = 0;
for(int i = 0; i < a; ++i)
b *= i;
return b;
}//C++14
[[deprecated]]标记
- C++14中可以通过添加deprecated标记表示当前函数、类、结构体可能会被废弃,例如:
[[deprecated]]
void func() {}
class [[deprecated]] test {};
struct [[deprecated]] test {};
- 当需要添加提醒信息时,可在关键字后加入[[deprecated("warning msg")]]
cout<< 0b1000'0000<
cout << 3.14'15926<
std::shared_timed_mutex & std::shared_lock & std::unique_lock
struct TestThread
{
mutable std::shared_timed_mutex mutex_;
int val;
TestThread()
{
val= 0;
}
int get() const
{
std::shared_lock
std::integer_sequence
template
std::exchange
std::vector
std::quoted
std::string str = "hello world";
std::cout << str << std::endl;//hello world
std::cout << std::quoted(str) << std::endl;//"hello world"



