Detects whether a type is constructible from its own value_type.
Declared in <folly/json/DynamicConverter.h>
<folly/json/DynamicConverter.h>
template<typename T> using detect_like_optional = decltype(T(std::declval<typename T::value_type>()));