Perché le coroutine (come da ora nelle bozze più recenti per C++ 1z) devono essere implementate come funzionalità linguistica di base (parole chiave elaborate e tutte) anziché un'estensione di libreria?C++ 1z Coroutine una lingua?
Esiste già un paio di implementazioni (Boost.Coroutine, ecc.), Alcune delle quali possono essere rese indipendenti dalla piattaforma, da ciò che ho letto. Perché il comitato ha deciso di utilizzarlo nel linguaggio di base?
Non sto dicendo che non dovrebbero, ma lo stesso Bjarne Stroustrup menziona in alcuni discorsi (non so più quale altro) che le nuove funzionalità dovrebbero essere implementate nelle biblioteche il più possibile invece di toccare il linguaggio principale.
Quindi c'è una buona ragione per farlo? Quali sono i vantaggi?
Non so come aumentare: le coroutine funzionano e se offrono la stessa semantica, ma la mia ipotesi è che le coroutine possano essere implementate in modo molto più efficiente come funzionalità di una lingua rispetto a una funzione di libreria. Inoltre, non sono del tutto sicuro se le coroutine possano effettivamente essere implementate usando solo il C++ standard. – MikeMB
@MikeMB: corretto su tutti gli account. – ildjarn
Un altro motivo potrebbe essere che è semplicemente molto più bello come parte della lingua (ad esempio non dover includere intestazioni speciali o passare tipi speciali come parametri alle funzioni) – CoffeeandCode