C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #include <iostream>
template< std::size_t N >
int F1( char(&arr)[N] )
{
std::cout << " My type is char(&arr)[" << N << "]" << std::endl;
return -2;
}
int main()
{
char text[] = "Privet";
F1( text );
} |
|
Почему отлавливает char* ? Потому, что передается в таком случаи
text[0]
. Почему если оба варианта происходит ошибка компилятора в выборе нужной функции для вызова - тут ответ
http://www.quizful.net/interview/cpp/4vmrpY9End8Y . При передачи массива в функцию принимать обычный указатель мы теряем данные об размере как минимум
P.S.
HelicopterK52, хватит уже обижаться, пмс