diff options
Diffstat (limited to 'src/boost/libs/serialization/test/test_static_warning.cpp')
-rw-r--r-- | src/boost/libs/serialization/test/test_static_warning.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/boost/libs/serialization/test/test_static_warning.cpp b/src/boost/libs/serialization/test/test_static_warning.cpp new file mode 100644 index 00000000..642b9cf3 --- /dev/null +++ b/src/boost/libs/serialization/test/test_static_warning.cpp @@ -0,0 +1,63 @@ +// (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/static_assert.hpp> +#include <boost/type_traits/is_polymorphic.hpp> + +#include <boost/serialization/static_warning.hpp> + +typedef char a1[2]; +typedef char a2[3]; + +class polymorphic { + virtual ~polymorphic(); +}; + +class non_polymorphic { +}; + +template<class T> +int f(){ + BOOST_STATIC_WARNING(T::value); + return 0; +} + +struct A { + BOOST_STATIC_CONSTANT(bool, value = false); +}; + +///////////////////////////////////////////////////////////////////////// +// compilation of this program should show a total of 10 warning messages + +// should show NO warning message +BOOST_STATIC_WARNING(true); + +// the following should show 5 warning message +int x = f<A>(); // Warn +int y = f<boost::is_polymorphic<non_polymorphic> >(); // Warn. +int z = f<boost::is_polymorphic<polymorphic> >(); + +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; +} |