/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/serialization/test/test_static_warning.cpp
63 строки
2 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// (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; }