官术网_书友最值得收藏!

  • Mastering C++ Programming
  • Jeganathan Swaminathan
  • 216字
  • 2021-07-02 18:28:46

Simplified static_assert 

The static_assert macro helps identify assert failures during compile time. This feature has been supported since C++11; however, the static_assert macro used to take a mandatory assertion failure message till, which is now made optional in C++17.

The following example demonstrates the use of static_assert with and without the message:

#include <iostream>
#include <type_traits>
using namespace std;

int main ( ) {

const int x = 5, y = 5;

static_assert ( 1 == 0, "Assertion failed" );
static_assert ( 1 == 0 );
static_assert ( x == y );

return 0;
}

The output of the preceding program is as follows:

g++-7 staticassert.cpp -std=c++17
staticassert.cpp: In function ‘int main()’:
staticassert.cpp:7:2: error: static assertion failed: Assertion failed
static_assert ( 1 == 0, "Assertion failed" );

staticassert.cpp:8:2: error: static assertion failed
static_assert ( 1 == 0 );

From the preceding output, you can see that the message, Assertion failed, appears as part of the compilation error, while in the second compilation the default compiler error message appears, as we didn't supply an assertion failure message. When there is no assertion failure, the assertion error message will not appear as demonstrated in static_assert ( x == y ).  This feature is inspired by the C++ community from the BOOST C++ library.

主站蜘蛛池模板: 沧源| 青海省| 石城县| 义马市| 德惠市| 和静县| 根河市| 惠东县| 娱乐| 闽侯县| 双流县| 拜泉县| 临澧县| 仲巴县| 教育| 尤溪县| 贵南县| 石阡县| 绵阳市| 新疆| 英山县| 达州市| 四川省| 资兴市| 宁都县| 大洼县| 辽阳市| 乐陵市| 无棣县| 淳安县| 静乐县| 乌鲁木齐县| 祁东县| 高青县| 涿州市| 长宁县| 泰来县| 永顺县| 黎城县| 眉山市| 历史|