Fix FBString in MSVC 2015
authorChristopher Dykes <cdykes@fb.com>
Tue, 2 May 2017 21:21:15 +0000 (14:21 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Tue, 2 May 2017 21:35:08 +0000 (14:35 -0700)
Summary: MSVC 2015 Update 3 is even worse in this particular case, and requires it to be explicitly referenced as being within the `folly` namespace >_>...

Reviewed By: ot, yfeldblum

Differential Revision: D4988025

fbshipit-source-id: dea311dd42f40b442951b8df3c5f68cf70d13769

folly/FBString.h

index c10490abeecfe4ce67953a7066516c7783dde2f6..f5b577a777d61cb939ae66e89c9475fe7222fe1e 100644 (file)
@@ -1238,11 +1238,14 @@ public:
   // otherwise MSVC 2017 will aggressively pre-resolve value_type to
   // traits_type::char_type, which won't compare as equal when determining
   // which overload the implementation is referring to.
+  // Also note that MSVC 2015 Update 3 requires us to explicitly specify the
+  // namespace in-which to search for basic_fbstring, otherwise it tries to
+  // look for basic_fbstring::basic_fbstring, which is just plain wrong.
   template <typename TP>
   typename std::enable_if<
       std::is_same<
           typename std::decay<TP>::type,
-          typename basic_fbstring<E, T, A, Storage>::value_type>::value,
+          typename folly::basic_fbstring<E, T, A, Storage>::value_type>::value,
       basic_fbstring<E, T, A, Storage>&>::type
   operator=(TP c);