On 17/08/2017 16:35, dodheim wrote:
Boost - Dev mailing list wrote
On 17/08/2017 13:27, Glen Fernandes wrote:
This is to detect a member 'impl_ptr_type' type? Just:
template<class, class = void> struct has_impl_ptr_type : boost::false_type { }; template <class T> struct has_impl_ptr_type<T, boost::void_t<typename T::impl_ptr_type> > : boost::true_type { };
That *is* a nicer way to do it. Requires a minimum of Boost 1.64 or C++17, though. (Or VS2015, apparently.)
This only requires C++11; it doesn't work on earlier versions of MSVC because MSVC was (and still is) lagging behind on support for expression-SFINAE.
std::void_t does not exist until C++17. However the VS2015 STL adds it anyway. boost::void_t does not exist until 1.64. However it only works on compilers that support expression-SFINAE (which is most C++11 compilers except VS, until VS2015). This is what I meant by the above.