38 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// UNSUPPORTED: no-threads10 11// <memory>12 13// shared_ptr14 15// template <class T>16// shared_ptr<T>17// atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r)18 19// UNSUPPORTED: c++0320 21#include <memory>22#include <cassert>23 24#include "test_macros.h"25 26int main(int, char**)27{28 {29 std::shared_ptr<int> p(new int(4));30 std::shared_ptr<int> r(new int(3));31 r = std::atomic_exchange(&p, r);32 assert(*p == 3);33 assert(*r == 4);34 }35 36 return 0;37}38