Remove needless usage of enable_if
Remove needless usage of enable_if

Summary:
Abstractly:
 - std::enable_if<true/false>                     -> defined/undefined
 - folly::is_detected<defined/undefined> -> true/false

We were needlessly converting from defined/undefined -> true/false -> defined/undefined. This pattern is especially problematic, when the type passed to is_detected, is the same type as should be returned by enable_if (i.e. the return type for the specialized function).

Fortunately, in this problematic case, there is also no need to use either is_detected or enable_if at all, Just using the return type directly will already disable the function correctly. No extra template metaprogramming is actually needed.

However, we do need to explicitly disable the fallback function, as it could also be valid.

Reviewed By: thedavekwon

Differential Revision: D34197096

fbshipit-source-id: b891df51fdcb61a47f26b9d68081eb39eeb13ac7

facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift