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

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.

主站蜘蛛池模板: 旬阳县| 巴中市| 南康市| 滦南县| 怀柔区| 万全县| 石阡县| 商丘市| 将乐县| 庐江县| 屯留县| 吉木萨尔县| 大厂| 武定县| 栖霞市| 大同县| 玉溪市| 绥芬河市| 阿拉尔市| 祁阳县| 巴林左旗| 介休市| 西充县| 正定县| 贺州市| 巨鹿县| 宣恩县| 库车县| 东海县| 广丰县| 象州县| 鹤山市| 松桃| 万荣县| 特克斯县| 锡林浩特市| 房产| 建湖县| 漳浦县| 闽清县| 浦江县|