How to determine (in the `<type_traits>` spirit) whether or not one type explicitly convertible into another type? For example, I want to check the presence of `F::explicit operator double const & () const;` for some `class`/`struct` `F`, but, at the same time, `F` should not been explicitly convertible to `float` or `long double` (something like `pred< double const & >::value && !pred< float >::value && !pred< long double >::value`).

Note, that `std::is_convertible< From, To >::value` checks "if *From* can be converted to *To* using **implicit conversion**". But I wish to determine whether there is the **explicit conversion** operator.

And, if it possible, the "how to determine, type *From* is convertible into a *namely* reference to type *To*?"?