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

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.

主站蜘蛛池模板: 玛沁县| 扎鲁特旗| 合水县| 平乡县| 綦江县| 绍兴县| 高台县| 青河县| 贵港市| 崇仁县| 凤城市| 称多县| 鱼台县| 武威市| 双桥区| 密云县| 江门市| 昌吉市| 洛阳市| 灵武市| 永和县| 肃北| 延津县| 鹤庆县| 盘山县| 盐山县| 穆棱市| 汨罗市| 滕州市| 巴南区| 乡城县| 余庆县| 固原市| 久治县| 高陵县| 乌兰县| 仪征市| 蒙山县| 红安县| 宝丰县| 平定县|