brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 1cf3692 Raw
51 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// <functional>10 11// reference_wrapper12 13// template <ObjectType T> reference_wrapper<const T> cref(reference_wrapper<T> t);14 15#include <functional>16#include <cassert>17 18#include "test_macros.h"19 20namespace adl {21  struct A {};22  void cref(A) {}23}24 25TEST_CONSTEXPR_CXX20 bool test()26{27  {28    const int i = 0;29    std::reference_wrapper<const int> r1 = std::cref(i);30    std::reference_wrapper<const int> r2 = std::cref(r1);31    assert(&r2.get() == &i);32  }33  {34    adl::A a;35    std::reference_wrapper<const adl::A> a1 = std::cref(a);36    std::reference_wrapper<const adl::A> a2 = std::cref(a1);37    assert(&a2.get() == &a);38  }39  return true;40}41 42int main(int, char**)43{44  test();45#if TEST_STD_VER > 1746  static_assert(test());47#endif48 49  return 0;50}51