如何确定(本着<type_traits>
精神)一种类型是否可显式转换为另一种类型?例如,我想检查 F::explicit operator double const & () const;
的存在。对于一些 class
/struct
F
,但同时,F
不应显式转换为 float
或 long double
(类似于 pred< double const & >::value && !pred< float >::value && !pred< long double >::value
)。
请注意,std::is_convertible< From, To >::value
检查“如果 From 可以使用 隐式转换 转换为 To”。但我想确定是否有显式转换运算符。
而且,如果可能的话,“如何确定类型 From 是否可转换为 即 对类型 To 的引用?”?
最佳答案
你需要自己定义:
template <class U, class T>
struct is_explicitly_convertible
{
enum {value = std::is_constructible<T, U>::value && !std::is_convertible<U, T>::value};
};
关于c++ - 检查类型是否可以显式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16893992/