diff options
Diffstat (limited to 'boost/variant/recursive_wrapper_fwd.hpp')
-rw-r--r-- | boost/variant/recursive_wrapper_fwd.hpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/boost/variant/recursive_wrapper_fwd.hpp b/boost/variant/recursive_wrapper_fwd.hpp index 2fc4341262..c40399f289 100644 --- a/boost/variant/recursive_wrapper_fwd.hpp +++ b/boost/variant/recursive_wrapper_fwd.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2002 Eric Friedman, Itay Maman -// Copyright (c) 2016 Antony Polukhin +// Copyright (c) 2016-2017 Antony Polukhin // // Portions Copyright (C) 2002 David Abrahams // @@ -20,6 +20,7 @@ #include <boost/mpl/aux_/lambda_support.hpp> #include <boost/type_traits/integral_constant.hpp> #include <boost/type_traits/is_constructible.hpp> +#include <boost/type_traits/is_nothrow_move_constructible.hpp> namespace boost { @@ -65,6 +66,9 @@ template <class T, class U> struct is_constructible<recursive_wrapper<T>, const template <class T, class U> struct is_constructible<recursive_wrapper<T>, recursive_wrapper<U>& > : boost::false_type{}; template <class T, class U> struct is_constructible<recursive_wrapper<T>, const recursive_wrapper<U>& > : boost::false_type{}; +// recursive_wrapper is not nothrow move constructible, because it's constructor does dynamic memory allocation. +// This specialisation is required to workaround GCC6 issue: https://svn.boost.org/trac/boost/ticket/12680 +template <class T> struct is_nothrow_move_constructible<recursive_wrapper<T> > : boost::false_type{}; /////////////////////////////////////////////////////////////////////////////// // metafunction is_recursive_wrapper (modeled on code by David Abrahams) |