CTL: utility.h, use ctl::swap in string (#1227)

* Add ctl utility.h

Implements forward, move, swap, and declval. This commit also adds a def
for nullptr_t to cxx.inc. We need it now because the CTL headers stopped
including anything from libc++, so we no longer get their basic types.

* Use ctl::swap in string

The STL spec says that swap is located in the string_view header anyawy.
Performance-wise this is a noop, but it’s slightly cleaner.
This commit is contained in:
Steven Dee (Jōshin) 2024-06-18 22:00:59 -07:00 committed by GitHub
parent a795017416
commit 9a5a13854d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 117 additions and 46 deletions

View file

@ -50,7 +50,7 @@ main()
ctl::string yo = "foo";
ctl::vector<ctl::string> A;
A.push_back("fun");
A.push_back(std::move(yo));
A.push_back(ctl::move(yo));
if (yo != "")
return 5;
A.emplace_back("bar");
@ -94,7 +94,7 @@ main()
A.push_back(1);
A.push_back(2);
A.push_back(3);
ctl::vector<int> B(std::move(A));
ctl::vector<int> B(ctl::move(A));
if (A.size() != 0)
return 17;
if (B.size() != 3)
@ -122,7 +122,7 @@ main()
A.push_back(2);
A.push_back(3);
ctl::vector<int> B;
B = std::move(A);
B = ctl::move(A);
if (A.size() != 0)
return 22;
if (B.size() != 3)
@ -286,7 +286,7 @@ main()
A.push_back(2);
A.push_back(3);
ctl::vector<int> B;
B = std::move(A);
B = ctl::move(A);
if (A.size() != 0)
return 63;
if (B.size() != 3)