// Copyright (c) 2017-2019 Antony Polukhin // // 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) #include "boost/config.hpp" #include "boost/variant.hpp" struct foo {}; struct some_user_provided_visitor_for_lvalues: boost::static_visitor { void operator()(foo& ) const {} void operator()(int ) const {} }; int main() { boost::apply_visitor( some_user_provided_visitor_for_lvalues(), boost::variant(foo()) ); #ifdef __GNUC__ # if __GNUC__ < 5 && __GNUC_MINOR__ < 8 # error This test does not pass on GCC < 4.8 because of the incomplete C++11 support # endif #endif #ifdef BOOST_MSVC # error Temporaries/rvalues could bind to non-const lvalues on MSVC compilers #endif }