@@ -307,16 +307,14 @@ ByteString final {
307307 void HashValue (absl::HashState state) const ;
308308
309309 template <typename Visitor>
310- std::common_type_t <std::invoke_result_t <Visitor, absl::string_view>,
311- std::invoke_result_t <Visitor, const absl::Cord&>>
312- Visit (Visitor&& visitor) const {
310+ decltype (auto ) Visit (Visitor&& visitor) const {
313311 switch (GetKind ()) {
314312 case ByteStringKind::kSmall :
315- return std::invoke (std:: forward<Visitor>(visitor), GetSmall ());
313+ return std::forward<Visitor>(visitor)( GetSmall ());
316314 case ByteStringKind::kMedium :
317- return std::invoke (std:: forward<Visitor>(visitor), GetMedium ());
315+ return std::forward<Visitor>(visitor)( GetMedium ());
318316 case ByteStringKind::kLarge :
319- return std::invoke (std:: forward<Visitor>(visitor), GetLarge ());
317+ return std::forward<Visitor>(visitor)( GetLarge ());
320318 }
321319 }
322320
@@ -664,15 +662,13 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI ByteStringView final {
664662 void HashValue (absl::HashState state) const ;
665663
666664 template <typename Visitor>
667- std::common_type_t <std::invoke_result_t <Visitor, absl::string_view>,
668- std::invoke_result_t <Visitor, const absl::Cord&>>
669- Visit (Visitor&& visitor) const {
665+ decltype (auto ) Visit(Visitor&& visitor) const {
670666 switch (GetKind ()) {
671667 case ByteStringViewKind::kString :
672- return std::invoke (std:: forward<Visitor>(visitor), GetString ());
668+ return std::forward<Visitor>(visitor)( GetString ());
673669 case ByteStringViewKind::kCord :
674- return std::invoke (std:: forward<Visitor>(visitor),
675- static_cast <const absl::Cord&>(GetSubcord ()));
670+ return std::forward<Visitor>(visitor)(
671+ static_cast <const absl::Cord&>(GetSubcord ()));
676672 }
677673 }
678674
0 commit comments