Errori, bug, domande - pagina 1966

 
A100:
Intendevo dire che la possibilità stessa di mettere un metodo fuori da una classe è comoda.

Sì, basta torturare e torturare, e poi si scopre che avresti dovuto conoscere certi segreti).

Forse hanno anche la specializzazione delle classi di modelli? Non lo so, ma sono sicuro che hanno qualche modo intelligente per farlo. Gliel'ho chiesto a lungo nello sportello di servizio e tacciono. Probabilmente anche loro hanno dei segreti. Fuoriuscita)

 
Alexey Navoykov:

Forse hanno anche una specializzazione di classi di modelli?

Così tanto tempo fa!

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.08.16 13:19

typedef void (*fn)();

template<typename T>
void g( T Value ) { Print(typename(Value)); }
void f() {}

void g( fn Value ) { Print(typename(Value)); }
void OnStart()
{
        g( f ); // void(*fn)()
}

O c'è qualcos'altro in mente?


ZS L'ho trovato.

 
fxsaber:

Quanto tempo fa!

O c'è qualcos'altro in mente?

ZS L'ho trovato.

No, stavo parlando di modelli di classe, non di funzioni.

A proposito, la specializzazione dei modelli di funzione non è ancora stata implementata. Quella che nel tuo link chiamano "specializzazione" per qualche motivo è in realtà qualcosa di completamente diverso. E al momento c'è solo la possibilità di sovraccarico con tipi specifici. È quasi la stessa cosa della specializzazione, l'unica differenza è che il compilatore non controlla l'identità della firma di tutte le funzioni sovraccaricate. Questo è necessario quando le funzioni sono in posti diversi del codice.

 
A100:

È molto più conveniente in questo modo.

Nel caso in cui non ci siano specializzazioni.
 
Alexey Navoykov:

A proposito, la specializzazione dei modelli di funzione non è stata ancora implementata. Quello che chiamano "specializzazione" nel tuo link non è proprio quello che è. E al momento c'è solo la possibilità di sovraccarico con tipi specifici. È quasi la stessa cosa della specializzazione, l'unica differenza è che il compilatore non controlla l'identità della firma di tutte le funzioni sovraccaricate. Potreste averne bisogno quando le funzioni si trovano in diversi frammenti di codice.

Non lo capisco senza un esempio.

 
fxsaber:

Senza un esempio, non capisco.

In effetti, ho esagerato quando ho detto "più o meno lo stesso". Le differenze sono significative, perché solo gli argomenti delle funzioni possono essere sovraccaricati, e ci possono essere altri nomi di tipo nel template che non sono legati agli argomenti. E possono essere solo specializzati. Per esempio, un template senza argomenti:

template<typename T>
void f() { }

template<>
void f<int>() { }
 
Alexey Navoykov:
Specializzazione senza argomenti? )) In cosa si specializzerà?
 
Комбинатор:
Specializzazione senza argomenti? )) E a cosa servirà la specializzazione?
Beh, dovrete deciderlo nel corpo della funzione. Cosa c'è di sbagliato qui? Ho un tale bisogno molto spesso. Devo risolverlo passando un parametro fittizio, il che è molto scabroso.
 
Alexey Navoykov:
Qual è il problema?
Niente se riesci a farlo compilare ed eseguire nei professionisti)
 

Subito dopo l'aggiornamento alla build 1650, quando si trascina un Expert Draw non compilato dal Navigator/Favourites su un grafico, invece di MQL5 non può aprire il file 'Draw.ex5' -> viene lanciato un altro Expert Advisor, cioè ExpertMACD

Tutto è stato sistemato dopo che la compilazione di Draw è finita, ma è un fatto

Dovrei aggiungere: la situazione si ripete - invece di qualsiasi Expert Advisor non compilato, viene lanciato ExpertMACD

Motivazione: