Chris@102: /*============================================================================= Chris@102: Copyright (c) 2001-2014 Joel de Guzman Chris@102: Copyright (c) 2001-2011 Hartmut Kaiser Chris@102: Chris@102: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@102: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@102: ==============================================================================*/ Chris@102: #if !defined(BOOST_SPIRIT_X3_UNUSED_APRIL_16_2006_0616PM) Chris@102: #define BOOST_SPIRIT_X3_UNUSED_APRIL_16_2006_0616PM Chris@102: Chris@102: #if defined(_MSC_VER) Chris@102: #pragma once Chris@102: #endif Chris@102: Chris@102: #include Chris@102: #include Chris@102: #include Chris@102: Chris@102: #if defined(BOOST_MSVC) Chris@102: # pragma warning(push) Chris@102: # pragma warning(disable: 4522) // multiple assignment operators specified warning Chris@102: #endif Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////////// Chris@102: namespace boost { namespace spirit { namespace x3 Chris@102: { Chris@102: struct unused_type Chris@102: { Chris@102: unused_type() Chris@102: { Chris@102: } Chris@102: Chris@102: template Chris@102: unused_type(T const&) Chris@102: { Chris@102: } Chris@102: Chris@102: template Chris@102: unused_type const& Chris@102: operator=(T const&) const Chris@102: { Chris@102: return *this; Chris@102: } Chris@102: Chris@102: template Chris@102: unused_type& Chris@102: operator=(T const&) Chris@102: { Chris@102: return *this; Chris@102: } Chris@102: Chris@102: unused_type const& Chris@102: operator=(unused_type const&) const Chris@102: { Chris@102: return *this; Chris@102: } Chris@102: Chris@102: unused_type& Chris@102: operator=(unused_type const&) Chris@102: { Chris@102: return *this; Chris@102: } Chris@102: Chris@102: // unused_type can also masquerade as an empty context (see context.hpp) Chris@102: Chris@102: template Chris@102: struct get_result : mpl::identity {}; Chris@102: Chris@102: template Chris@102: unused_type get(ID) const Chris@102: { Chris@102: return unused_type(); Chris@102: } Chris@102: }; Chris@102: Chris@102: unused_type const unused = unused_type(); Chris@102: Chris@102: inline std::ostream& operator<<(std::ostream& out, unused_type const&) Chris@102: { Chris@102: return out; Chris@102: } Chris@102: Chris@102: inline std::istream& operator>>(std::istream& in, unused_type&) Chris@102: { Chris@102: return in; Chris@102: } Chris@102: }}} Chris@102: Chris@102: #if defined(BOOST_MSVC) Chris@102: # pragma warning(pop) Chris@102: #endif Chris@102: Chris@102: #endif