C++ 15.1 元编程的引入

。1 

.11 

 

 编译期引入计算 ==> 元编程

C++为什么快?因为在编译期可以进行处理优化

Python编译也会生成 .pyc文件

元编程希望在编译期引入更多的计算。那么,哪些运算可以放到编译期?

 经典模版元程序

template <int x>
struct M
{ 
    constexpr static int val = x+1;
};

int main()
{
    return M<3>::val;
}

输入输出,上述计算在编译期完成。

 顺序调用

 一个参数作为输入的元编程

 复杂一点,两个参数作为输入的元编程

分支调用

if constexpr 

if constexpr 可以引入编译期分支

如果不小心写成了if, 就变成了运行期分支

 

偏特化引用 

例1:

例2:

template <int x>
	requires (x<100)
struct Imp<x>
{
	constexpr static int value  = x*2;
	using type = int;
};

template <int x>
	requires (x>=100)

struct Imp<x>
{
	constexpr static int value = x-3;
	using type = int;
};

constexpr auto x = Imp<100>::value;

int main()
{
	std::cout<<x<<std::endl;

}

conditional 引入分支

enable_if 引入分支

太复杂了,不想听了。。。。

循环调用

利用特化来实现循环体调用的结束

。。。。未完待续 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值