这个API设计略有问题。
按理说"detail", "impl"这些东西应该基本不被外部调用代码看见。
当然,遇到这种情况写auto肯定是对的。
事实上,作为特例,此时写auto是更好的做法。这样做可以保证当这个库的内部实现类被修改时你的代码仍然正确。
【 在 hanjiamajia (hanjiamajia) 的大作中提到: 】
: 标 题: Re: Re:大伙来说说自从c++11以来,哪些特性是刚需
: 发信站: 水木社区 (Wed Dec 2 13:50:07 2020), 站内
:
: 【 在 hgoldfish 的大作中提到: 】
: : 写 for (int i: vector_of_int) {} 不是更简单。
: : 我还是喜欢把类型写出来。程序员一天打不了多少字,一天写的代码可能还不如随便灌的一篇水贴字数多。没必要为了省几个字母增加记忆负担。
: :
:
: 你举的这个例子,int 比 auto 还少一个字,写全当然没问题
: 平常根本不是这样,拿常用的 nlohmann json 库举个例子
:
: nlohmann::json j = nlohmann::json::parse(R"([1,2,3])");
: for (const nlohmann::detail::iteration_proxy_value<nlohmann::detail::iter_impl<nlohmann::json>>& item : j.items()) {
: qDebug() << item.value().get<int>();
: }
:
: 这个你每次也把类型写出来嘛?
: 而且,说实话,这个还是好的,日常中经常遇到比这个长的;长还好说,有的推导出的类型甚至一下根本写不出来,真要强写,得分析个几分钟的情况
: 总感觉你是把 c++ 当 Ansi C 写的,不然 auto 这么解决痛点的事情能被你描述成只是为了“为了省几个字母增加记忆负担”
: --
: ※ 修改:·hanjiamajia 于 Dec 2 13:53:30 2020 修改本文·[FROM: 211.249.40.*]
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 211.249.40.*]
--
修改:hanjiamajia FROM 211.249.40.*
FROM 76.126.252.*