]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/testsuite/std/ranges/access/cdata.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / std / ranges / access / cdata.cc
index b16c99607a58cfd1870097d444fa75b3bc54f3dd..c8489dd1ab9967c240efeceffd5983a0dd843205 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2019 Free Software Foundation, Inc.
+// Copyright (C) 2019-2020 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -51,17 +51,22 @@ struct R
   long l = 0;
 
   int* data() const { return nullptr; }
-  friend long* begin(R&& r) { return &r.l; }
-  friend const long* begin(const R&& r) { return &r.l + 1; }
+  friend long* begin(R&& r); // this function is not defined
+  friend const long* begin(const R& r) { return &r.l; }
+  friend const short* begin(const R&&); // not defined
 };
 
+// This is a lie, ranges::begin(R&&) returns a dangling iterator.
+template<> constexpr bool std::ranges::enable_safe_range<R> = true;
+
 void
 test03()
 {
   R r;
   const R& c = r;
-  VERIFY( std::ranges::cdata(std::move(r)) == std::ranges::data(std::move(c)) );
-  VERIFY( std::ranges::cdata(std::move(c)) == std::ranges::data(std::move(c)) );
+  VERIFY( std::ranges::cdata(r) == std::ranges::data(c) );
+  VERIFY( std::ranges::cdata(std::move(r)) == std::ranges::begin(c) );
+  VERIFY( std::ranges::cdata(std::move(c)) == std::ranges::begin(c) );
 }
 
 int