模板参数为bool,std::true_type,std::false_type

std::true_type和std::false_type是两个不同类型,bool是一个类型,true和false是bool类型的两个

#include <iostream>
#include <type_traits>

template <typename T>
void fun_bool(T& val, std::true_type)
{
    std::cout << "val:" << val << "\ttrue\n";
}

template <typename T>
void fun_bool(T& val, std::false_type)
{
    std::cout << "val:" << val << "\tfalse\n";
}

template <typename T>
void fun(const T& val)
{
    //如果T是指针类型调用true,否则调用false
    fun_bool(val, std::is_pointer<T>());
}

template <bool b>
void test()
{
    if (b) 
        std::cout << "true\n"; 
    else 
        std::cout << "false\n";
}

int main()
{
    int i = 1;
    fun(&i); //true
    fun(2);  //false

    test<true>();   //test只能用bool类型的值实例化
    //test<int>();  //错误
    //test();       //错误

    return 0;
}

原文链接: https://www.cnblogs.com/mmmmmmmmm/p/15569434.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    模板参数为bool,std::true_type,std::false_type

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404072

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月24日 下午6:41
下一篇 2023年4月24日 下午6:41

相关推荐