c_cpp 基于ADL的SFINAE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 基于ADL的SFINAE相关的知识,希望对你有一定的参考价值。

 namespace bitmasks_lib
 {
    std::false_type enableBitMaskOperators(type_tag<T>);

    // use the result of this function as SFINAE predicate
    template<typename T>
    constexpr bool bitmaskOperatorsEnabled()
    {
        using bitmasks_lib::enableBitMaskOperators;
        return decltype(enableBitMaskOperators(type_tag<T>()))::value;
    }
}

#define ENABLE_BITMASK_OPERATORS(T) std::true_type enableBitMaskOperators(type_tag<T>);

// usage:

namespace mynamespace
{
    enum class MyBitmap
    {
        ...
    };

    ENABLE_BITMASK_OPERATORS(MyBitmap)
}

以上是关于c_cpp 基于ADL的SFINAE的主要内容,如果未能解决你的问题,请参考以下文章

ADL100-liukang-面向知识图谱的问答系统

专门化模板成员函数 [SFINAE]

SFINAE 与 type_traits

CCF ADL92:自然语言理解:新学习方法及知识

删除函数和 ADL

C++ SFINAE 示例?