diff --git a/Telegram/SourceFiles/mtproto/core_types.h b/Telegram/SourceFiles/mtproto/core_types.h index 937dd38ced..ffedf9cd7a 100644 --- a/Telegram/SourceFiles/mtproto/core_types.h +++ b/Telegram/SourceFiles/mtproto/core_types.h @@ -376,6 +376,15 @@ struct RepeatHelper { template using Repeat = typename RepeatHelper::type; +struct InnerHelper { + static void Check(...); + template ().v)> + static Result Check(const Type&); + + template + using type = std::decay_t()))>; +}; + template class conditional { public: @@ -397,12 +406,16 @@ public: return *_value; } - template ().v)>> + template < + typename Inner = InnerHelper::type, + typename = std::enable_if_t>> Inner value_or(Repeat fallback) const { return _value ? _value->v : fallback; } - template ().v)>> + template < + typename Inner = InnerHelper::type, + typename = std::enable_if_t>> Inner value_or_empty() const { return _value ? _value->v : Inner(); }