gpt4 book ai didi

c++ - C++11 auto 关键字太多了?

转载 作者:IT老高 更新时间:2023-10-28 11:27:14 26 4
gpt4 key购买 nike

我一直在使用 C++11 标准中提供的新 auto 关键字来处理复杂的模板类型,我相信它就是为此而设计的。但我也将它用于以下方面:

auto foo = std::make_shared<Foo>();

更怀疑的是:

auto foo = bla(); // where bla() return a shared_ptr<Foo>

我没有看到太多关于这个话题的讨论。似乎 auto 可能被过度使用,因为类型通常是文档和完整性检查的一种形式。您在使用 auto 时的界限在哪里?此新功能的推荐用例是什么?

澄清一下:我不是在寻求哲学观点;我要求标准委员会对该关键字的预期用途,可能会就该预期用途在实践中的实现方式发表评论。

最佳答案

我认为,当乍一看很难说如何编写类型时,应该使用 auto 关键字,但表达式右侧的类型是显而易见的。例如,使用:

my_multi_type::nth_index<2>::type::key_type::composite_key_type::
key_extractor_tuple::tail_type::head_type::result_type

boost::multi_index 中获取复合键类型,即使您知道它是 int。你不能只写 int 因为它将来可能会改变。在这种情况下,我会写 auto

因此,如果 auto 关键字在特定情况下提高了可读性,请使用它。当读者可以清楚 auto 代表什么类型时,您可以编写 auto

这里有一些例子:

auto foo = std::make_shared<Foo>();   // obvious
auto foo = bla(); // unclear. don't know which type `foo` has

const size_t max_size = 100;
for ( auto x = max_size; x > 0; --x ) // unclear. could lead to the errors
// since max_size is unsigned

std::vector<some_class> v;
for ( auto it = v.begin(); it != v.end(); ++it )
// ok, since I know that `it` has an iterator type
// (don't really care which one in this context)

关于c++ - C++11 auto 关键字太多了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6434971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com