3 回答
TA贡献1777条经验 获得超3个赞
尽可能auto
在任何地方使用- 特别是const auto
这样可以减少副作用。除了明显的情况外,您不必担心类型,但它们仍然会为您进行静态验证,并且您可以避免重复。在auto
不可行的地方,您可以使用decltype
语义表达类型作为基于表达式的契约。您的代码看起来会有所不同,但这将是一个积极的变化。
TA贡献1813条经验 获得超2个赞
我认为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)
- 3 回答
- 0 关注
- 403 浏览
添加回答
举报