c++ - 检查类型是否可以显式转换

标签 c++ c++11

如何确定(本着<type_traits> 精神)一种类型是否可显式转换为另一种类型?例如,我想检查 F::explicit operator double const & () const; 的存在。对于一些 class/struct F ,但同时,F不应显式转换为 floatlong 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/

相关文章:

c++ - C++中的宏可以定义宏吗?

c++ - 这种 nullptr 的使用是否会产生编译器错误?

c++ - 编程原理与实践第27章侵入式列表错误?

c++ - 应该如何从回调函数更新/返回值?

c++ - 非急切克林星 boost 灵气

c++ - 这个命名空间的目的是什么?

c++ - 如何检查类型是否提供具有算术类型的函数

c++ - SetWinEventHook 不捕获任何事件

c++ - 为什么 C++ 标准库不提供 cmath 函数的 constexpr 版本?

c++ - 如何使用 enable_if<>::type 返回类型制作函数原型(prototype)?