summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2023-04-09 14:39:39 +0200
committerStanislaw Halik <sthalik@misaki.pl>2023-04-09 14:39:39 +0200
commit345f2a06c7dfc3deaaf78fdac8db462377fd421c (patch)
tree61154551ec09cd1817e5fd4bbedae21fe3a3bd01
parentcb3f364d0cf1e16bd94b5f29eff61b8de7401034 (diff)
entities: fix pure virtual concept checks
-rw-r--r--entity/concepts.hpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/entity/concepts.hpp b/entity/concepts.hpp
index 8ab13df9..682360dd 100644
--- a/entity/concepts.hpp
+++ b/entity/concepts.hpp
@@ -8,17 +8,17 @@
namespace floormat::entities {
template<typename F, typename T, typename FieldType>
-concept FieldReader_memfn = requires(const T x, F f) {
+concept FieldReader_memfn = requires(const T& x, F f) {
{ (x.*f)() } -> std::convertible_to<FieldType>;
};
template<typename F, typename T, typename FieldType>
-concept FieldReader_ptr = requires(const T x, F f) {
+concept FieldReader_ptr = requires(const T& x, F f) {
{ x.*f } -> std::convertible_to<FieldType>;
};
template<typename F, typename T, typename FieldType>
-concept FieldReader_function = requires(const T x, F f) {
+concept FieldReader_function = requires(const T& x, F f) {
{ f(x) } -> std::convertible_to<FieldType>;
};
@@ -30,17 +30,17 @@ concept FieldReader = requires {
};
template<typename F, typename T, typename FieldType>
-concept FieldWriter_memfn = requires(T x, move_qualified<FieldType> value, F f) {
+concept FieldWriter_memfn = requires(T& x, move_qualified<FieldType> value, F f) {
{ (x.*f)(value) } -> std::same_as<void>;
};
template<typename F, typename T, typename FieldType>
-concept FieldWriter_ptr = requires(T x, move_qualified<FieldType> value, F f) {
+concept FieldWriter_ptr = requires(T& x, move_qualified<FieldType> value, F f) {
{ x.*f = value };
};
template<typename F, typename T, typename FieldType>
-concept FieldWriter_function = requires(T x, move_qualified<FieldType> value, F f) {
+concept FieldWriter_function = requires(T& x, move_qualified<FieldType> value, F f) {
{ f(x, value) } -> std::same_as<void>;
};