diff --git a/include/Async/Task.h b/include/Async/Task.h index 334d9ca7..7c506e2a 100644 --- a/include/Async/Task.h +++ b/include/Async/Task.h @@ -198,8 +198,10 @@ public: } }; - template <> - struct promise_result { + // WORKAROUND: GCC bug - full specialization in non-namespace scope not supported + // see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85282 + template V> + struct promise_result { void return_void() noexcept {} }; diff --git a/include/Support/JSON.h b/include/Support/JSON.h index b08c1254..8182793a 100644 --- a/include/Support/JSON.h +++ b/include/Support/JSON.h @@ -175,7 +175,7 @@ struct Serde { } }; -template +template struct Serde> { using V = llvm::SmallString; diff --git a/include/Support/Struct.h b/include/Support/Struct.h index 30201a7d..4fdac547 100644 --- a/include/Support/Struct.h +++ b/include/Support/Struct.h @@ -300,7 +300,7 @@ template struct Struct> { constexpr inline static bool reflectable_struct = (refl::reflectable_struct && ...); - constexpr static std::size_t member_count = (Struct::member_count + ...); + constexpr static std::size_t member_count = (impl::member_count() + ...); template constexpr static auto collect_members(Object&& object) {