什么C ++成语在C ++ 11中被弃用 [英] what C++ idioms are deprecated in C++11
本文介绍了什么C ++成语在C ++ 11中被弃用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有了新的标准,有新的方式做事情,许多都比旧的方式更好,但旧的方式仍然很好。还清楚的是,出于向后兼容性的原因,新标准没有正式弃用。因此,剩下的问题是:
什么旧的编码方式绝对不如C ++ 11样式,我们现在可以做什么呢?
$解决方案
在回答这个问题时,你可以跳过使用自动变量 ol>
final
指定符以防止类派生 shrink_to_fit()
成员函数,这将消除需要交换我想我会停在那里!
With the new standard, there are new ways of doing things, and many are nicer than the old ways, but the old way is still fine. It's also clear that the new standard doesn't officially deprecate very much, for backward compatibility reasons. So the question that remains is:
What old ways of coding are definitely inferior to C++11 styles, and what can we now do instead?
In answering this, you may skip the obvious things like "use auto variables".
解决方案
- Final Class: C++11 provides the
final
specifier to prevent class derivation - C++11 lambdas substantially reduce the need for named function object (functor) classes.
- Move Constructor: The magical ways in which std::auto_ptr works are no longer needed due to first-class support for rvalue references.
- Safe bool: This was mentioned earlier. Explicit operators of C++11 obviate this very common C++03 idiom.
- Shrink-to-fit: Many C++11 STL contains provide
shrink_to_fit()
member function, which should eliminate the need swapping with a temporary. - Temporary Base Class: Some old C++ libraries use this rather complex idiom. With move semantics it's no longer needed.
- Type Safe Enum Enumerations are very safe in C++11.
- Prohibiting heap allocation: The "= delete" syntax is a much more direct way of saying that a particular functionality is explicitely denied. This is applicable to preventing heap allocation (i.e., =delete for member operator new), preventing copies, assignment, etc.
- templated typedef: Alias templates in C++11 reduce the need for simple templated typedefs. However, complex type generators still need meta functions.
- Some numerical compile-time computations, such as fibonacci can be easily replaced using Generalized constant expressions
- result_of: Uses of class template result_of should be replaced with decltype. I think result_of uses decltype when it is available.
- In-class member initializers save typing for default initialization of non-static members with default values.
- In new C++11 code NULL should be redefined as nullptr but see STL's talk to learn why they decided against it.
- Expression Template fanatics are delighted to have the trailing return type function syntax in C++11. No more 30 lines long return types!
I think I'll stop there!
这篇关于什么C ++成语在C ++ 11中被弃用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文