/*============================================================================= Copyright (c) 2011-2014 Bolero MURAKAMI https://github.com/bolero-MURAKAMI/Sprout Distributed under 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) =============================================================================*/ #ifndef SPROUT_STATIC_WARNING_HPP #define SPROUT_STATIC_WARNING_HPP #include namespace sprout { // // static_warning // template struct static_warning; template<> struct static_warning { template static void warn() {} }; template <> struct static_warning { template static void warn() { Message static_warning_failed; } }; } // namespace sprout // // SPROUT_STATIC_WARNING // #define SPROUT_STATIC_WARNING_IMPL_2(cond, msg, line) \ struct sprout_static_warning_line_ ## line { \ struct msg {}; \ sprout_static_warning_line_ ## line() { \ ::sprout::static_warning<(cond)>:: \ warn(); \ } \ } #define SPROUT_STATIC_WARNING_IMPL(cond, msg) \ SPROUT_STATIC_WARNING_IMPL_2(cond, msg, __LINE__) #define SPROUT_STATIC_WARNING(cond) \ SPROUT_STATIC_WARNING_IMPL(cond, static_warning_failed) #endif // #ifndef SPROUT_STATIC_WARNING_HPP