std::experimental::propagate_const::swap
From cppreference.com
                    
                                        
                    < cpp | experimental | propagate const
                    
                                                            
                    | constexpr void swap(propagate_const & pt); | (library fundamentals TS v2) | |
Swaps the wrapped pointer with that of pt. Let t_ designate the private data member that is the wrapped pointer-like object, then this function is equivalent to swap(t_, pt.t_).
[edit] Parameters
| pt | - | another propagate_constobject to swap with | 
[edit] Exceptions
noexcept specification:  
noexcept(noexcept(swap(t_, pt.t_)))