test_static_warning.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 66 行

CPP
66
字号
//  (C) Copyright Jonathan Turkanis 2004.//  Use, modification and distribution are subject to the//  Boost Software License, Version 1.0. (See accompanying file//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org for most recent version including documentation.// note: this is a compile only test.#include <boost/config.hpp> // BOOST_STATIC_CONST#include <boost/serialization/static_warning.hpp>#include <boost/type_traits/is_polymorphic.hpp>#pragma warning(disable:4094)typedef char a1[2];typedef char a2[3];class polymorphic {    virtual ~polymorphic();};class non_polymorphic {};class test_class {};template <class T>int f(){    BOOST_STATIC_WARNING(T::value);    return 0;}       struct A {    BOOST_STATIC_CONSTANT(bool, value = 0);};/////////////////////////////////////////////////////////////////////////// compilation of this program should show a total of 10 warning messages// should show NO warning messageBOOST_STATIC_WARNING(true);// the following should show 5 warning messageint x = f<A>(); BOOST_STATIC_WARNING(sizeof(a1) == sizeof(a2)); // Warn.BOOST_STATIC_WARNING(sizeof(a1) != sizeof(a1)); // Warn.BOOST_STATIC_WARNING(! boost::is_polymorphic<polymorphic>::value); // Warn.BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value); // Warn.int main(int /* argc */, char * /* argv */[]){    // should show NO warning message    BOOST_STATIC_WARNING(true);    // the following should show 5 warning message    f<A>();    BOOST_STATIC_WARNING(sizeof(a1) == sizeof(a2)); // Warn.    BOOST_STATIC_WARNING(sizeof(a1) != sizeof(a1)); // Warn.    BOOST_STATIC_WARNING(! boost::is_polymorphic<polymorphic>::value); // Warn.    BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value); // Warn.    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?