C++中的未定义和depends

本文探讨了C++中的模板、异常和多线程。模板看似复杂,实则语法上的难点主要在于SFINAE,理解其语义能简化问题。异常处理中的assert用于验证不变性(invariant),而多线程则需谨慎处理数据一致性,避免未定义行为。建议在必要时使用成熟库和模型来管理线程。
摘要由CSDN通过智能技术生成

先立个flag, 从此以后有三不聊:不聊政治,不聊宗教,不聊教育孩子。这三个主题有个共同的特点:大家都有自己的观点,大家都认为自己的观点对,但是其实谁的观点还都没啥用!而且这些话题插嘴的门槛还特别底, 这就是为啥容易吵吵起来的原因了。

所以我决定聊点C++语言,不好意思,这个热心网友想插嘴还不太容易。 今天主要聊聊我最近发现的C++的一个现象:那就是模板看起来很难, 其实不难; 异常看起来很简单,其实很难;多线程看起来很难,其实TMD更难。

首先聊模板,talk is cheap,show me the code。下面这段眼花缭乱的代码要是读懂还真不容易,不过他难就难在了语法上,其实就是利用编译期间,模板实例化的时候的SFINAE特点,来判定一个类是否有serialize这个函数。就这么简单。我知道你想骂人了,好端端的你就直接说中文就好,为啥总拽洋文呢? 因为这个词一旦翻译成中文,你要是看到了就想打人了。 这个单词就是“替换失败不是错误”这几个词的首字母缩写。不知道你怎么想,我个人觉得,同样是不懂,但是英文说出来更牛逼一点,是不?


template struct hasSerialize{
typedef char yes[1];
typedef yes no[2];
template struct reallyHas;
template static yes& test(reallyHas* /unused/) { }
template static no& test(…) { /* dark matter */ }<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值