1234567891011121314151617181920212223242526272829303132 |
- // 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> {
- void operator()(foo& ) const {}
- void operator()(int ) const {}
- };
- int main() {
- boost::apply_visitor(
- some_user_provided_visitor_for_lvalues(),
- boost::variant<int, foo>(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
- }
|