Ich sehe keinen logischen Grund. Ich meine, Sie leicht die Anforderung durch die Verwendung einer Struktur, die ein Array Element wie diese überwunden werden können:Warum verbietet ISO C++ das Zurückgeben von Arrays?
template <size_t n>
struct arr { int d[n]; };
auto fnReturningArray()
{
return arr<3>{0, 1, 2};
};
Welche genau die gleiche Art und Weise verhalten, als ob das Array direkt mit dem kleinen Unterschied zurückgeführt wird, dass Sie zuerst den Zugang sollten Strukturelement "d", um es zu verwenden. Auch der Standard selbst hat ähnliche Funktionen vom Typ 'std :: array' hinzugefügt. Es scheint also, dass die Implementierung möglich ist. Warum hat ISO C++ diese Aktion verboten? Vielleicht veraltete Code-Kompatibilität (aber ich kann kaum glauben, dass dies der Fall ist, da mit den anderen neuen Dingen, die hinzugefügt wurden, es lange weg ist, wie zum Beispiel die neue Bedeutung des Schlüsselworts 'auto').
Da Arrays nicht kopiert werden können. – Columbo
Arrays sind nicht kopierbar oder zuweisbar, daher können sie nicht zurückgegeben oder als Wert übergeben werden. Warum das so ist, das wäre eine gute Frage. – juanchopanza
@Columbo Aber sie wurden im struct magisch kopierbar. – AnArrayOfFunctions