美文网首页
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