c – SFINAE sizeof =检测表达式是否编译

前端之家收集整理的这篇文章主要介绍了c – SFINAE sizeof =检测表达式是否编译前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚发现如何检查操作符<<被提供用于类型.
template<class T> T& lvalue_of_type();
template<class T> T  rvalue_of_type();

template<class T>
struct is_printable
{
    template<class U> static char test(char(*)[sizeof(
        lvalue_of_type<std::ostream>() << rvalue_of_type<U>()
    )]);
    template<class U> static long test(...);

    enum { value = 1 == sizeof test<T>(0) };
    typedef boost::integral_constant<bool,value> type;
};

这个技巧是否知名,还是刚刚获得了编程的诺贝尔奖? 原文链接:https://www.f2er.com/c/115438.html

猜你在找的C&C++相关文章