summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bazelrc4
-rw-r--r--asl/base/meta.hpp10
-rw-r--r--asl/types/option.hpp20
-rw-r--r--todo.txt1
4 files changed, 12 insertions, 23 deletions
diff --git a/.bazelrc b/.bazelrc
index 19154d5..1034128 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -9,8 +9,8 @@ build:windows --extra_toolchains=@@rules_cc++cc_configure_extension+local_confi
build:linux --repo_env=CC=clang
-build:windows --cxxopt=-Xclang=-std=c++20
-build:linux --cxxopt=-std=c++20
+build:windows --cxxopt=-Xclang=-std=c++23
+build:linux --cxxopt=-std=c++23
build --cxxopt=-Wall
build --cxxopt=-Wno-c++98-compat
diff --git a/asl/base/meta.hpp b/asl/base/meta.hpp
index ce17420..17a7620 100644
--- a/asl/base/meta.hpp
+++ b/asl/base/meta.hpp
@@ -193,11 +193,11 @@ template<typename T> concept is_integer = _is_integer_helper<un_cv_t<T>>::value;
template<typename T> concept is_enum = __is_enum(T);
-template<typename T> struct is_uniquely_represented : false_type {};
-template<is_integer T> struct is_uniquely_represented<T> : true_type {};
-template<is_enum T> struct is_uniquely_represented<T> : true_type {};
-template<> struct is_uniquely_represented<uint128_t> : true_type {};
-template<> struct is_uniquely_represented<byte> : true_type {};
+template<typename T> struct is_uniquely_represented : false_type {};
+template<is_integer T> struct is_uniquely_represented<T> : true_type {};
+template<is_enum T> struct is_uniquely_represented<T> : true_type {};
+template<> struct is_uniquely_represented<uint128_t> : true_type {};
+template<> struct is_uniquely_represented<byte> : true_type {};
template<typename T> concept uniquely_represented = is_uniquely_represented<un_cv_t<T>>::value;
diff --git a/asl/types/option.hpp b/asl/types/option.hpp
index 86cfca3..5cbb759 100644
--- a/asl/types/option.hpp
+++ b/asl/types/option.hpp
@@ -365,23 +365,11 @@ public:
}
}
- // @Todo(C++23) Deducing this
- constexpr T&& value() &&
+ template<typename Self>
+ constexpr auto&& value(this Self&& self)
{
- ASL_ASSERT_RELEASE(has_value());
- return ASL_MOVE(m_payload).as_init_unsafe();
- }
-
- constexpr T& value() &
- {
- ASL_ASSERT_RELEASE(has_value());
- return m_payload.as_init_unsafe();
- }
-
- constexpr const T& value() const&
- {
- ASL_ASSERT_RELEASE(has_value());
- return m_payload.as_init_unsafe();
+ ASL_ASSERT_RELEASE(self.has_value());
+ return ASL_FWD(self).m_payload.as_init_unsafe();
}
template<typename U>
diff --git a/todo.txt b/todo.txt
index 2c010fa..2922bcd 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1 +1,2 @@
warning compare with 0 in format_float.cpp
+add copy_cvref_t