To pytanie pochodzi z tego:tablica nie rozkładowi do wskaźnika jeśli przeszły przez const odniesienia w funkcji szablonu
c++ pass array to function question
ale ponieważ PO przyjął odpowiedź Chyba nikt nie będzie go czytać teraz.
Próbowałem tego kodu na g ++. Wydaje się, że tablica nie rozpadają się wskaźnik, kiedy przeszedł do tej funkcji (funkcja zwraca prawidłowe wyniki):
#include <iostream>
template <typename T>
std::size_t size_of_array (T const & array)
{
return sizeof (array)/sizeof (*array);
}
int main()
{
int a [5];
std::cout << size_of_array (a) << '\n';
}
Inny użytkownik (Sharptooth) powiedział, że mają ten sam problem na VC++ 10 z inline off.
Czy ktoś może wyjaśnić? Dzięki.
Moje dzikie przypuszczenie jest takie, że 'T' przypomina typ' int [5] ', więc nie ma potrzeby zaniku wskaźnika. Ale nie jestem ekspertem. – Constantinius