I referred to Scott Meyers "More Effective C++" for auto type deduction. It is mentioned that is works the same way as Template type deduction, and there are 3 cases mentioned. My question falls into case 3 (when ParamType is not a pointer or reference), but the outcome is not matching what is described.
#include <iostream>
int main (void)
{
auto i = 2;
const auto c = &i;
*c = 4;
std::cout << "i is " << i;
}
It should work as
template<typename T>
void f(const T param);
f(&i); // int *
So, T here should match to int * and the complete type of param should be const int *.
But, as the program above shows, c is not const int * but is int *.
Can someone explain what am I missing here?
Aucun commentaire:
Enregistrer un commentaire