This was fixed for std::optional, but not the TS version, so Clang
rejects it.

        PR libstdc++/80493
        * include/experimental/optional (optional::swap): Fix exception
        specification.

Tested powerpc64le-linux, committed to trunk.


commit 1d7d6db208e6371f00f8aecd77eb1a78a6fbe578
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Mon Apr 24 12:15:13 2017 +0100

    PR libstdc++/80493 fix invalid exception specification
    
        PR libstdc++/80493
        * include/experimental/optional (optional::swap): Fix exception
        specification.

diff --git a/libstdc++-v3/include/experimental/optional 
b/libstdc++-v3/include/experimental/optional
index 197a1fc..4a1e71d 100644
--- a/libstdc++-v3/include/experimental/optional
+++ b/libstdc++-v3/include/experimental/optional
@@ -690,7 +690,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       void
       swap(optional& __other)
       noexcept(is_nothrow_move_constructible<_Tp>()
-               && noexcept(swap(declval<_Tp&>(), declval<_Tp&>())))
+               && __is_nothrow_swappable<_Tp>::value)
       {
         using std::swap;
 

Reply via email to