Errori, bug, domande - pagina 2419
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Che ne diresti di aggiungere al linguaggio la possibilità di passare un argomento come valore r? Questo risolverebbe immediatamente tutti i problemi e permetterebbe di creare contenitori universali per qualsiasi tipo.
Come? ) I contenitori universali hanno bisogno di link e frecce, non di questa roba.
E l'utente medio non è quello che fa l'r-value.
Cosa ne pensate di aggiungere al linguaggio la possibilità di passare un argomento come valore r? Questo risolverebbe immediatamente tutti i problemi e permetterebbe di creare contenitori universali per qualsiasi tipo. In particolare, il metodo di cui sopra sarebbe sovraccaricato per r-valore:
Questo è esattamente il modo in cui è implementato in tutti i contenitori STL.
E il secondo vantaggio: permetterà di definire costruttori di spostamento. Ora questo è anche molto mancante, in particolare per l'implementazione di puntatori intelligenti unique_ptr e altre classi, progettate per memorizzare in monopolio qualche risorsa unica all'interno, cioè i soliti costruttori di copia sono inaccettabili per loro.
Che senso ha allora passare un parametro per riferimento?
Che senso ha allora passare il parametro per riferimento?
Che senso ha allora passare il parametro per riferimento?
Nemmeno io capisco bene di che tipo di riferimento stai parlando. Originariamente, stavamo dicendo che i riferimenti l-value (disponibili in MQL) non coprono tutte le esigenze, il che è stato dimostrato dall'impossibilità di passare una costante o un valore di espressione a tale funzione. Per questo scopo, è necessario il riferimento r-value, che accetterà tutti gli altri tipi. Così, la combinazione di due funzioni sovraccaricate per r-value e l-value garantirà che tutti i tipi di argomenti saranno accettati, indipendentemente dalla loro origine.
Quello che hai detto, che una costante non è memorizzata da nessuna parte, ma creata al volo, significa che dovrebbe essere passata come valore r, non come valore l (a differenza del C++). Non fa alcuna differenza fondamentale in che modo viene interpretata, la cosa principale è che può essere accettata in una funzione.
Quello che hai detto, che la costante non è memorizzata da nessuna parte, ma è creata al volo, significa che deve essere passata come valore r, non come valore l (a differenza del C++). Non fa alcuna differenza in linea di principio in quale forma è interpretata, purché la si possa accettare in una funzione.
Il riferimento al valore r implica in realtà un oggetto per il quale sarà fatto lo spostamento, cioè deve essere ancora creato un oggetto temporaneo.
Beh, in realtà il riferimento al valore r implica che c'è un oggetto per il quale lo spostamento sarà fatto, cioè un oggetto temporaneo deve essere creato comunque.
Ovviamente, l'oggetto esiste sempre da qualche parte. Ho scritto che questo oggetto è creato al volo, cioè temporaneo.
Ma credo di aver capito cosa chiedeva Slava. Intendeva dire perché abbiamo bisogno di accettare un oggetto temporaneo per riferimento quando possiamo accettarlo per valore.
Bene, il punto è che è impossibile sovraccaricare una funzione contemporaneamente per riferimento e valore in una sola copia:
Questo rende problematico scrivere soluzioni universali. E sostituendo il valore con r-value, otteniamo una variante funzionante:
template<typename T> void f(T &&) { } template<typename T> void f(T const&) { }
Intendeva dire: perché prendere un oggetto temporaneo per riferimento quando si può prenderlo per valore.
perché
e perché di solito è più conveniente passare qualcosa per riferimento che per valore.
E se il metodo è templato (che è dove tutto è iniziato), allora il comportamento attuale semplicemente non permette di scrivere correttamente.
E se il metodo è basato su template (che è dove tutto è iniziato), allora il comportamento attuale semplicemente non permette di scrivere correttamente.
E sostituendo il valore con il valore r, otteniamo una versione funzionante:
non proprio)
la semantica di spostamento implica dire all'oggetto da spostare che non ha bisogno di rimuovere i suoi interni. se l'oggetto è costante, avreste bisogno di un membro di classe mutabile, mql non lo supporta
non proprio)
la semantica move implica dire all'oggetto da spostare che non ha bisogno di rimuovere i suoi interni. se l'oggetto è una costante, avete bisogno di un membro di classe mutabile, mql non supporta questo