summaryrefslogtreecommitdiffhomepage
path: root/compat
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2021-11-20 18:34:21 +0100
committerStanislaw Halik <sthalik@misaki.pl>2021-11-20 18:34:21 +0100
commitede972a70c6d93d68a828b6e84240e1a5fa547a0 (patch)
tree8eb385c45b4d4f16634e9fad6cd0043d845ecf0d /compat
parent9ee0390203c38e5921dac2e04905df449915775f (diff)
compat/macros: pass trivial types by value in cv_qualified<t>
Diffstat (limited to 'compat')
-rw-r--r--compat/macros.hpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/compat/macros.hpp b/compat/macros.hpp
index 497933cf..f40d7c7a 100644
--- a/compat/macros.hpp
+++ b/compat/macros.hpp
@@ -20,6 +20,7 @@ template<typename t>
using to_const_ref_t = std::add_lvalue_reference_t<std::add_const_t<remove_cvref_t<t>>>;
template<typename t>
-using cv_qualified = std::conditional_t<std::is_fundamental_v<remove_cvref_t<t>>,
+using cv_qualified = std::conditional_t<sizeof(remove_cvref_t<t>) <= sizeof(void*)*4 && std::is_trivially_copyable_v<t> ||
+ std::is_fundamental_v<remove_cvref_t<t>>,
remove_cvref_t<t>,
to_const_ref_t<t>>;