libstdc++: Make std::move_only_function never valueless in std::variant
This is not suitable to backport, as it affects the ABI of std::variant and so isn't appropriate for a release branch. libstdc++-v3/ChangeLog: * include/bits/move_only_function.h (_Never_valueless_alt): Define partial specialization for std::move_only_function.
This commit is contained in:
parent
da55353e95
commit
a364488f7a
1 changed files with 12 additions and 0 deletions
|
@ -183,6 +183,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
constexpr bool __is_move_only_function_v<move_only_function<_Tp>> = true;
|
||||
/// @endcond
|
||||
|
||||
namespace __detail::__variant
|
||||
{
|
||||
template<typename> struct _Never_valueless_alt; // see <variant>
|
||||
|
||||
// Provide the strong exception-safety guarantee when emplacing a
|
||||
// move_only_function into a variant.
|
||||
template<typename... _Signature>
|
||||
struct _Never_valueless_alt<std::move_only_function<_Signature...>>
|
||||
: true_type
|
||||
{ };
|
||||
} // namespace __detail::__variant
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // namespace std
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue