| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | // Boost.Units - A C++ library for zero-overhead dimensional analysis and // unit/quantity manipulation and conversion//// Copyright (C) 2003-2008 Matthias Christian Schabel// Copyright (C) 2008 Steven Watanabe//// 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 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)/// A convenience macro that allows definition of static/// constants in headers in an ODR-safe way.# 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/// A convenience macro for static constants with auto /// type deduction. #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 // BOOST_UNITS_HAS_BOOST_TYPEOF#endif // BOOST_UNITS_HAS_TYPEOF#endif // BOOST_UNITS_STATIC_CONSTANT_HPP
 |