Kiedy mam dwie matryce przeciążeń funkcyjne tak:funkcja przeciążenia: const * vs const &
template<class T>
void foo(T const&)
{
// do something with a const reference
cout << "const reference version";
}
template<class T>
void foo(T const*)
{
// do something with a const pointer
cout << "const pointer version";
}
Dlaczego kompilator wybrać pierwszą wersję, gdy tworzony z const typ wskaźnika?
int* bar;
foo(bar); // prints "const reference version"
char const* baz;
foo(baz); // prints "const pointer version"
Możesz znaleźć ładne wyjaśnienie tego problemu na kanale 9: http://channel9.msdn.com/Series/C9-Lectures-Stephan-T-Lavavej-Core-C-/Stephan-T-Lavavej-Core -Cpp-3-of-n. Ale zasadniczo Mark B odpowiedział na twoje pytanie. – mkaes