diff options
Diffstat (limited to 'boost/contract/detail/none.hpp')
-rw-r--r-- | boost/contract/detail/none.hpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/boost/contract/detail/none.hpp b/boost/contract/detail/none.hpp new file mode 100644 index 0000000000..afbd3024e8 --- /dev/null +++ b/boost/contract/detail/none.hpp @@ -0,0 +1,28 @@ + +#ifndef BOOST_CONTRACT_DETAIL_NONE_HPP_ +#define BOOST_CONTRACT_DETAIL_NONE_HPP_ + +// Copyright (C) 2008-2018 Lorenzo Caminiti +// Distributed under the Boost Software License, Version 1.0 (see accompanying +// file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt). +// See: http://www.boost.org/doc/libs/release/libs/contract/doc/html/index.html + +namespace boost { namespace contract { namespace detail { + +// Tag for "no type". +struct none { + // Some lib code use this to avoid unused local var warnings on #if, etc. + static none& value() { + static none none_value; + return none_value; + } +}; + +// Transform `void` to `none` type (for convenience, instead of using MPL). +template<typename T> struct none_if_void { typedef T type; }; +template<> struct none_if_void<void> { typedef none type; }; + +} } } // namespace + +#endif // #include guard + |