C/C++ 吐槽第一期:你最讨厌的C/C++里面的数据类型是什么

C/C++ 这里面讨论的范围包括从以往开始,到现有的所有官方标准,VC扩展,GCC扩展,

C语言部分包括C89、C90、C99、C11这些知名的大版本,中间或者之前的比如K&R这种不出名的小版本我没啥兴趣去了解,所以暂时放弃。

C++语言部分包括C++98、C++03、C++11这种知名的大版本,更早之前的1.0、2.0、3.0什么的,暂时放弃。

再加上两大主流编译器的扩展,VC扩展以及GCC扩展。

clong之类的这种不考虑。

 

进入主题

今天第一次扯蛋,我想说的类型就是

std::function

 

C++11,新出了这么个玩意,哎,这是要干啥,到底为了啥。

首先我们需要承认的就是,这东西其实很牛,功能很强大,可以把各种乱七八糟的玩意都组装成函数,

但是问题来了,作为一个函数指针,最基础的功能,就是比较两个函数是否是同一个函数,这功能没有啊,

好比一个数学高材生,解决各种疑难问题,解决各种四元四次方程,but ,1+1 等于几,这个算不了。

 

比如按照C++11最新标准,std::function 能干的事情可多了,

可以这么玩

 1 std::function<int(int, int)> f = fpFunction; 

可以这么玩

 1 using FtCallbackProc = std::function<void(int)>; 

还可以这么玩

 1 std::function<int()> fp = std::bind([](int x, int y)->int { return x + y; }, 10, 2); 

但是,不能这么玩

1
2
std::function<int(int, int)> fp = add;
fp == add;

 

编译不过,呵呵呵呵呵呵,说是没operator==。

这样就会导致出现一个问题,就是stl里面基本上如果用了std::function的话,那么就不能再做查询、删除操作了,

我定义了一个变量,给了它一个值,我都不能判断它的值和我给它的值是不是相等,

这变量也是牛B到没边了。

 

人生无奈,其实我很奇怪的是,使用它到底是图什么,图少打几行代码么,我用这个类用的实在是少,

而且我使用的很多都是极端用法,常规用法我也不怎么用得上。

 

so 这个类型是我发现非常坑的类型,我最讨厌的数据类型。

 

posted @   穷到底  阅读(274)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2017-04-16 对于工作
点击右上角即可分享
微信分享提示