callWithExtractedKey fix for old libstdc++
Summary:
libstdc++ versions that don't include N4387 ("perfect initialization" for
pairs and tuples) can't use the two-arg pair constructor as an emplace
target when the emplace args don't exactly match the destination types.
(libstdc++.so.6.0.22 is the first one that contains the improvement,
which corresponds to gcc 6.1.0). This diff guards the optimization added
in D21419822 (https://github.com/facebook/folly/commit/7d618e4fde39b44e0952880653e10ec97400583f) with an enable_if test to avoid the problem, and includes
the template parameter changes necessary to get the target types to the
test site.
(Note: this ignores all push blocking failures!)
Differential Revision: D21766560
fbshipit-source-id: f8b2a0230504237f976e14b0740bb31bc7a57b77
Showing
Please register or sign in to comment