Non vedo alcun motivo logico. Voglio dire, si può facilmente superare il requisito utilizzando una struttura che contiene un membro di matrice in questo modo:Perché ISO C++ proibisce il ritorno degli array?
template <size_t n>
struct arr { int d[n]; };
auto fnReturningArray()
{
return arr<3>{0, 1, 2};
};
Che si comporterà allo stesso modo esatto come se la matrice è direttamente restituito con la piccola differenza che si deve prima accedere alla membro della struttura 'd' per usarlo. Anche lo stesso standard ha aggiunto funzionalità simili con il tipo 'std :: array'. Quindi sembra che sia possibile l'implementazione. Perché allora ISO C++ ha vietato questa azione? Forse compatibilità con il codice legacy (ma non riesco a credere che sia così, come con le altre novità aggiunte, è finita da tempo, come ad esempio il nuovo significato della parola chiave 'auto').
Perché non è possibile copiare gli array. – Columbo
Gli array non sono copiabili o assegnabili, quindi non è possibile restituirli o passarli per valore. Per quanto riguarda il motivo, beh, sarebbe una buona domanda. – juanchopanza
@Columbo Ma sono diventati magicamente copiabili quando in struct. – AnArrayOfFunctions