16a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//===----------------------------------------------------------------------===//
26a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//
36a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
46a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//
56a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
66a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant// Source Licenses. See LICENSE.TXT for details.
76a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//
86a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//===----------------------------------------------------------------------===//
96a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant
106a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant// <queue>
116a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant
126a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant// void swap(priority_queue& c)
136a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//     noexcept(__is_nothrow_swappable<container_type>::value &&
146a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant//              __is_nothrow_swappable<Compare>::value);
156a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant
166a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant// This tests a conforming extension
176a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant
186a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant#include <queue>
196a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant#include <cassert>
206a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant
215cb52824fc2a0caf233311e91d9a2a53368f04adDan Albert#include "MoveOnly.h"
226a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant
236a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnantint main()
246a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant{
256a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant#if __has_feature(cxx_noexcept)
266a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant    {
276a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant        typedef std::priority_queue<MoveOnly> C;
286a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant        C c1, c2;
296a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant        static_assert(noexcept(swap(c1, c2)), "");
306a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant    }
316a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant#endif
326a09441022a8b7e91ed7b84f3f968d3710110e0bHoward Hinnant}
33