Following C++ polymorphism with boost scoped_ptr, I would like to understand the rules of C++ argument deduction. For example:
- the rules for C++ polymorphic substitutions, when smart pointers and containers are used
- automatic conversions, between const and non-const arguments
- when can temporaries be passed as references?
- how do the rules differ in template argument deduction.
If there is a relevant section in the standard you can point to that would help too.