diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
commit | 1a78a62555be32868418fe52f8e330c9d0f95d5a (patch) | |
tree | d3765a80e7d3b9640ec2e930743630cd6b9fce2b /boost/units/detail/prevent_redefinition.hpp | |
download | boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.gz boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.bz2 boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.zip |
Imported Upstream version 1.49.0upstream/1.49.0
Diffstat (limited to 'boost/units/detail/prevent_redefinition.hpp')
-rw-r--r-- | boost/units/detail/prevent_redefinition.hpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/boost/units/detail/prevent_redefinition.hpp b/boost/units/detail/prevent_redefinition.hpp new file mode 100644 index 0000000000..fba969ae38 --- /dev/null +++ b/boost/units/detail/prevent_redefinition.hpp @@ -0,0 +1,54 @@ +// 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) 2007-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_DETAIL_PREVENT_REDEFINITION_HPP +#define BOOST_UNITS_DETAIL_PREVENT_REDEFINITION_HPP + +#include <boost/mpl/long.hpp> + +namespace boost { + +namespace units { + +namespace detail { + +struct no { no() {} char dummy; }; +struct yes { no dummy[2]; }; + +template<bool> struct ordinal_has_already_been_defined; + +template<> +struct ordinal_has_already_been_defined<true> { }; + +template<> +struct ordinal_has_already_been_defined<false> { typedef void type; }; + +} + +/// This must be in namespace boost::units so that ADL +/// will work. we need a mangled name because it must +/// be found by ADL +/// INTERNAL ONLY +template<class T> +detail::no +boost_units_is_registered(const T&) +{ detail::no result; return(result); } + +/// INTERNAL ONLY +template<class T> +detail::no +boost_units_unit_is_registered(const T&) +{ detail::no result; return(result); } + +} // namespace units + +} // namespace boost + +#endif // BOOST_UNITS_PREVENT_ORDINAL_REDEFINITION_IMPL_HPP |