1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef BOOST_UNITS_STATIC_CONSTANT_HPP
- #define BOOST_UNITS_STATIC_CONSTANT_HPP
- #include <boost/units/config.hpp>
- #if defined(BOOST_NO_CXX11_CONSTEXPR) || defined(BOOST_UNITS_DOXYGEN)
- # define BOOST_UNITS_STATIC_CONSTANT(name, type) \
- template<bool b> \
- struct name##_instance_t \
- { \
- static const type instance; \
- }; \
- \
- namespace \
- { \
- static const type& name = name##_instance_t<true>::instance; \
- } \
- \
- template<bool b> \
- const type name##_instance_t<b>::instance
- #else
- # define BOOST_UNITS_STATIC_CONSTANT(name, type) \
- BOOST_STATIC_CONSTEXPR type name
- #endif
- #if BOOST_UNITS_HAS_TYPEOF
- #if BOOST_UNITS_HAS_BOOST_TYPEOF
- #define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \
- BOOST_TYPEOF_NESTED_TYPEDEF(name##_nested_t, value) \
- BOOST_UNITS_STATIC_CONSTANT(name, name##_nested_t::type) = (value)
- #elif BOOST_UNITS_HAS_MWERKS_TYPEOF
- #define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \
- BOOST_UNITS_STATIC_CONSTANT(name, __typeof__(value)) = (value)
- #elif BOOST_UNITS_HAS_GNU_TYPEOF
- #define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \
- BOOST_UNITS_STATIC_CONSTANT(name, typeof(value)) = (value)
- #endif
- #endif
- #endif
|