@@ -303,16 +303,14 @@ ByteString final {
303303 void HashValue (absl::HashState state) const ;
304304
305305 template <typename Visitor>
306- std::common_type_t <std::invoke_result_t <Visitor, absl::string_view>,
307- std::invoke_result_t <Visitor, const absl::Cord&>>
308- Visit (Visitor&& visitor) const {
306+ decltype (auto ) Visit (Visitor&& visitor) const {
309307 switch (GetKind ()) {
310308 case ByteStringKind::kSmall :
311- return std::invoke (std:: forward<Visitor>(visitor), GetSmall ());
309+ return std::forward<Visitor>(visitor)( GetSmall ());
312310 case ByteStringKind::kMedium :
313- return std::invoke (std:: forward<Visitor>(visitor), GetMedium ());
311+ return std::forward<Visitor>(visitor)( GetMedium ());
314312 case ByteStringKind::kLarge :
315- return std::invoke (std:: forward<Visitor>(visitor), GetLarge ());
313+ return std::forward<Visitor>(visitor)( GetLarge ());
316314 }
317315 }
318316
@@ -657,15 +655,13 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI ByteStringView final {
657655 void HashValue (absl::HashState state) const ;
658656
659657 template <typename Visitor>
660- std::common_type_t <std::invoke_result_t <Visitor, absl::string_view>,
661- std::invoke_result_t <Visitor, const absl::Cord&>>
662- Visit (Visitor&& visitor) const {
658+ decltype (auto ) Visit(Visitor&& visitor) const {
663659 switch (GetKind ()) {
664660 case ByteStringViewKind::kString :
665- return std::invoke (std:: forward<Visitor>(visitor), GetString ());
661+ return std::forward<Visitor>(visitor)( GetString ());
666662 case ByteStringViewKind::kCord :
667- return std::invoke (std:: forward<Visitor>(visitor),
668- static_cast <const absl::Cord&>(GetSubcord ()));
663+ return std::forward<Visitor>(visitor)(
664+ static_cast <const absl::Cord&>(GetSubcord ()));
669665 }
670666 }
671667
0 commit comments