Вы можете эмулировать передачу массивов фиксированного размера по значению, как это.
рудно понятьtypedef
шаблон для массивов.
typedef char Char10[10];
void fun (Char10 a) // not passing reference (interested in pass by value)
{
if(typeid(Char10) == typeid(char*))
throw 0; // <--- never happens
}
int main ()
{
char a[10]; fun(a); // ok
char b[11]; fun(b); // why works ?
}
Почему разные размеры массива по значению принимаютсяfun()
? Находятсяchar[10]
а такжеchar[11]
не разные типы?
редактировать: Для тех, кто говорит, что он распадается на указатель, смотрите мой отредактированный кодchar[10]
а такжеchar*
не похоже