From 1036ebae30d0cc388608262b7b692ad3edf6ad8c Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 15 Aug 2023 11:47:43 +0300 Subject: [PATCH] Fix sir::is_custom --- libs/sir/include/psemek/sir/trivial.hpp | 62 ++++++++++++------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/libs/sir/include/psemek/sir/trivial.hpp b/libs/sir/include/psemek/sir/trivial.hpp index fbc80329..5ba80333 100644 --- a/libs/sir/include/psemek/sir/trivial.hpp +++ b/libs/sir/include/psemek/sir/trivial.hpp @@ -5,41 +5,41 @@ #include +namespace psemek_sir_adl_helper +{ + + struct fake_istream + { + void read(char *, std::size_t){} + + std::size_t offset() const { return 0; } + }; + + struct fake_ostream + { + void write(char const *, std::size_t){} + + std::size_t offset() const { return 0; } + }; + + static_assert(::psemek::sir::is_istream_v); + static_assert(::psemek::sir::is_ostream_v); + + template + constexpr bool is_custom_helper = requires (T & x, fake_istream & is, fake_ostream & os) + { + write(os, x); + read(is, x); + }; + +} + namespace psemek::sir { - namespace detail - { - - struct fake_istream - { - void read(char *, std::size_t){} - - std::size_t offset() const { return 0; } - }; - - struct fake_ostream - { - void write(char const *, std::size_t){} - - std::size_t offset() const { return 0; } - }; - - static_assert(is_istream_v); - static_assert(is_ostream_v); - - template - constexpr bool is_custom_helper = requires (T & x, fake_istream & is, fake_ostream & os) - { - write(os, x); - read(is, x); - }; - - } - template struct is_custom - : std::bool_constant> + : std::bool_constant<::psemek_sir_adl_helper::is_custom_helper> {}; template @@ -55,7 +55,7 @@ namespace psemek::sir template struct is_trivial - : std::bool_constant && std::is_standard_layout_v> + : std::bool_constant && std::is_trivially_copyable_v && std::is_standard_layout_v> {}; template