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