Вы можете эмулировать передачу массивов фиксированного размера по значению, как это.

рудно понять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()&nbsp;? Находятсяchar[10]&nbsp;а такжеchar[11]&nbsp;не разные типы?

редактировать: Для тех, кто говорит, что он распадается на указатель, смотрите мой отредактированный кодchar[10]&nbsp;а такжеchar*&nbsp;не похоже