美文网首页
conditional

conditional

作者: 404Not_Found | 来源:发表于2022-02-25 21:48 被阅读0次
    • 作者: 雪山肥鱼
    • 时间:20220226 21:22
    • 目的: conditional

    C++ 11 引入的类模板,表示一种编译期的分支逻辑

    template<bool b, class T, class U>
    struct myConditional {
        using type = T;
    };
    
    template <class T, class U>
    struct myConditional<false, T, U> {
        using Type = U;
    };
    
    int main(int argc, char ** argv) {
    
        return 0;
    }
    

    bool 值为 true, 则 type 类型为T, 否则为U.

    #include <iostream>
    using namespace std;
    
    int main(int argc, char ** argv) {
        
        std::conditional<true, int, double>::type tmp1;
        std::conditional<false, int, double>::type  tmp2;
    
        cout << "tmp1:" << typeid(decltype(tmp1)).name() << endl;//int
        cout << "tmp2:" << typeid(decltype(tmp2)).name() << endl;//double
        return 0;
    }
    

    举例:
    需求,定义一个 名字教 tgvar的变量,根据常量的值不同。其类型也就不同。

    
        constexpr int j = 135; //假设给进去35
    
        std::conditional<
            (j > 100), double,  //值>100,tsvar是double,
            std::conditional<
                (j > 80), float, //值在80-100之间,那么tsvar是float类型。
                std::conditional<
                    (j > 40), int,  //值在40-80之间,那么tsvar是int类型。
                    char       //值不超过40,tsvar是char类型
                >::type
            > ::type
        >::type   tsvar;
    
        cout << "tsvar的类型为:" << typeid(decltype(tsvar)).name() << endl;
    
        return 0;
    

    相关文章

      网友评论

          本文标题:conditional

          本文链接:https://www.haomeiwen.com/subject/clkcrrtx.html