Odpověď ber s rezervou, protože o tom jazyce moc nevím.
Proč by funkce neměla mít možnost vracet referenci? O C# moc nevím, ale mám pocit že se tam s referencemi pracuje furt. Je to tak, že tvůj jazyk nezvládá referenci na referenci (ukazatel na ukazatel)?
Řešení C je podle mně hrozně komplikované. Spojuje dvě nezávislé věci (rozhraní kontejneru a rozhraní prvku) do jednoho bastlu. Navíc stále neřeší kód typu
a[i].metoda(x,y,z)
, který občas používám.
Je možné i vracet pomocný objekt, který bude mít operátor=, případně další.
Ale závisí to na spoustě vlastností toho jazyka, které neznám. Co dělá operátor přiřazení? Modifikuje vnitřek objektu, nebo jen nastaví referenci na jiný objekt? Jsou operátory jako += jen syntaktický cukr, nebo se chovají úplně jinak než prosté přiřazení? Bez podrobností tady asi moc dobré odpovědi nedostaneš.