Erreurs, bugs, questions - page 2006

 
A100:

Intuitivement, const est parfois une partie d'un type et parfois juste un identifiant, qu'à l'intérieur de la fonction le pointeur sera const.

Cela peut être ressenti à traversPrint(__FUNCSIG__) ;

 
La valeur du drawdown dans le tableau d'optimisation est affichée de façon étrange. Il indique le drawdown maximal par moyen (mais il est écrit en pourcentage). Mais après un seul test, il s'avère que le drawdown relatif diffère du maximum (le pourcentage est plus ou moins grand). Lorsqu'on utilise la gestion de l'argent, est-il nécessaire d'ajouter quelque chose d'autre pour afficher les résultats souhaités ?
 
A100:

Erreur de compilation

template<typename T>
void f( T, const T ) {}
class A {};
void OnStart()
{
        A * const a = new A;
        f( a, a ); //error: 'a' - cannot convert from const pointer to nonconst pointer
}
C'est comme ça que ça se compile, la version originale ne devrait pas.
 
Комбинатор:
C'est ainsi qu'il compile, la version originale ne devrait pas.

Pourquoi ?

template<typename T>
struct B {
        void f( T, const T ) {}
};
class A {};
void OnStart()
{
          const A* a;
        B<const A*> b;
        b.f( a, a ); //нормально
}

Donc c'est bon. Qu'est-ce qui a changé en principe ?

template<typename T>
        void f( T, const T ) {}
class A {};
void OnStart()
{
          const A *a;
          f( a, a ); //error: 'a' - cannot convert from const pointer to nonconst pointer
}
 
A100:

Qu'est-ce qui a fondamentalement changé ?

La différence est énorme ! C'est ce que vous avez appelé.

void B<const A*>::f(const A*,const A*)
Le compilateur bogue dans le sens où il ne peut pas déterminer la version correcte du modèle. Il est évident qu'on lui a dit de le faire.
template<typename T>
        void f( T, const T ) {}
class A {};
void OnStart()
{
          const A *a;
          f<const A*>( a, a );
}

Et ça marche.

 
fxsaber:
Et ça marche.

Pourquoi des caractères supplémentaires ?

 
A100:

Pourquoi des caractères supplémentaires ?

Pour montrer que le compilateur ne devine pas une version parfaitement exploitable du motif.

 
fxsaber:

Pour montrer que le compilateur ne devine pas une version parfaitement exploitable du motif.

Pourquoi le devrait-elle ? Le ServiceDesk peut se débrouiller tout seul.

 
A100:

Pourquoi ?

D'après votre spécialisation, le type aurait dû être rejeté, ce qui est le cas. Si vous spécifiez explicitement le bon type, il compilera bien sûr.
 
A100:

Quel est l'intérêt ? Le ServiceDesk est capable de se débrouiller tout seul.

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

A100, 2017.09.18 03:10

En général, j'utilise rarement des modèles - je ne suis pas entré dans les détails - je ne peux l'expliquer que de manière intuitive.