diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/entity.hpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/entity.hpp b/src/entity.hpp index 10df2366..8d62780b 100644 --- a/src/entity.hpp +++ b/src/entity.hpp @@ -12,8 +12,9 @@ namespace floormat {} namespace floormat::entities { -template<typename T> struct pass_by_value : std::bool_constant<std::is_fundamental_v<T>> {}; +template<typename T, typename = void> struct pass_by_value : std::bool_constant<std::is_fundamental_v<T>> {}; template<> struct pass_by_value<StringView> : std::true_type {}; +template<typename T> struct pass_by_value<T, std::enable_if_t<std::is_trivially_copy_constructible_v<T> && sizeof(T) <= sizeof(void*)>> : std::true_type {}; template<typename T> constexpr inline bool pass_by_value_v = pass_by_value<T>::value; template<typename T> using const_qualified = std::conditional_t<pass_by_value_v<T>, T, const T&>; |
