//----------------------------------------------------------------------------- // boost-libs variant/test/issue42.cpp source file // See http://www.boost.org for updates, documentation, and revision history. //----------------------------------------------------------------------------- // // Copyright (c) 2018-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) // Test case from https://github.com/boostorg/variant/issues/42 #include #include #include #include #ifdef BOOST_NO_CXX11_SMART_PTR template struct shared_ptr_like {}; typedef shared_ptr_like ptr_t; #else typedef std::shared_ptr ptr_t; #endif template class func{}; int main() { typedef boost::make_recursive_variant< int, ptr_t >::type node; node x = 1; (void)x; typedef boost::make_recursive_variant< std::string, int, double, bool, ptr_t, std::map, std::vector >::type node2; node2 x2 = 1; (void)x2; typedef boost::make_recursive_variant< int, func, boost::recursive_variant_&(*)(boost::recursive_variant_, boost::recursive_variant_*), ptr_t >::type node3; node3 x3 = func(); (void)x3; }