brintos

brintos / llvm-project-archived public Read only

0
0
Text · 839 B · f488e0e Raw
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