C++ 属性: noreturn (C++11 起)
来自cppreference.com
                    
                                        
                    < cpp | language | attributes
                    
                                                            
                    指示函数不返回。
语法
 [[noreturn]]
 | 
|||||||||
解释
指示函数不返回。
此属性仅应用到函数声明中正在声明的函数名。若拥有此属性的函数实际上返回,则行为未定义。
若函数的任何声明指定此属性,则其首个声明必须指定它。若函数在一个翻译单元中声明为带 [[noreturn]] 属性,而同一函数在另一翻译单元中声明为不带 [[noreturn]] 属性,则程序非良构;不要求诊断。
示例
运行此代码
[[ noreturn ]] void f() { throw "error"; // OK } void q [[ noreturn ]] (int i) { // 若以 <= 0 的参数调用则行为未定义 if (i > 0) { throw "positive"; } } // void h() [[noreturn]]; // 错误:属性应用到 h 的函数类型,而非 h 自身
标准库
下列标准函数声明带有 noreturn 属性:
 终止函数 | |
|    (C++11)  | 
  导致正常的程序终止,不进行清理  (函数)  | 
|   导致非正常的程序终止(不进行清理)  (函数)  | |
|   导致正常的程序终止并进行清理  (函数)  | |
|    (C++11)  | 
  导致快速程序终止,不进行完全的清理  (函数)  | 
|    异常处理失败时调用的函数  (函数)  | |
|    (C++17 中移除)  | 
   违背动态异常说明时调用的函数  (函数)  | 
 始终抛出异常的函数 | |
|    (C++11)  | 
   从一个 std::exception_ptr 抛出异常  (函数)  | 
|   抛出其所存储的异常  ( std::nested_exception 的公开成员函数)
 | |
|    (C++11)  | 
   抛出实参,带上混入的 std::nested_exception   (函数模板)  | 
 非局部跳转 (C++17 起) | |
|    跳转到指定位置   (函数)  | |