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

  • 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.

主站蜘蛛池模板: 旬邑县| 山东| 太仓市| 榆中县| 手机| 绥棱县| 长丰县| 会昌县| 新化县| 洛扎县| 临沂市| 濮阳县| 怀柔区| 洪洞县| 南城县| 上蔡县| 枣庄市| 咸宁市| 左云县| 沙河市| 夏河县| 天津市| 雅江县| 霍林郭勒市| 新昌县| 湖口县| 郴州市| 高碑店市| 靖远县| 崇阳县| 平乡县| 永安市| 北海市| 安溪县| 邵东县| 宕昌县| 长子县| 合山市| 睢宁县| 宁明县| 剑阁县|