Errores, fallos, preguntas - página 1966

 
A100:
Me refería a que la propia posibilidad de colocar un método fuera de una clase es práctica.

Sí, sólo torturas y torturas, y luego resulta que deberías haber conocido ciertos secretos).

¿Quizás también tengan especialización de clases de patrones? No lo sé, pero seguro que tienen alguna forma inteligente de hacerlo. Les pregunté durante mucho tiempo en el mostrador de servicio y se quedaron callados. Probablemente, también tienen algunos secretos. Derrame )

 
Alexey Navoykov:

¿Quizás también tengan una especialización de clases de patrones?

¡Hace tanto tiempo!

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

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 hay algo más en mente?


ZS Lo encontró.

 
fxsaber:

Así que, ¡hace cuánto tiempo!

¿O hay algo más en mente?

ZS Lo encontró.

No, me refería a las plantillas de las clases, no a las funciones.

Por cierto, la especialización de las plantillas de funciones aún no se ha implementado. Lo que en tu enlace llaman "especialización", por alguna razón, es en realidad muy diferente. Y ahora mismo sólo existe la posibilidad de sobrecargar con tipos específicos. Es casi lo mismo que la especialización, la única diferencia es que el compilador no controla si las firmas de todas las funciones sobrecargadas son idénticas. Esto es necesario cuando las funciones están en diferentes lugares del código.

 
A100:

Es mucho más cómodo así.

En caso de que no haya especializaciones.
 
Alexey Navoykov:

Por cierto, la especialización de las plantillas de funciones aún no se ha implementado realmente. Lo que llaman "especialización" en tu enlace no es realmente lo que es. Y ahora mismo sólo existe la posibilidad de sobrecargar con tipos específicos. Es casi lo mismo que la especialización, la única diferencia es que el compilador no controla la identidad de la firma de todas las funciones sobrecargadas. Puede necesitarlo cuando las funciones se encuentran en diferentes fragmentos de código.

No lo entiendo sin un ejemplo.

 
fxsaber:

Sin un ejemplo, no lo entiendo.

De hecho, he exagerado cuando he dicho "más o menos lo mismo". Las diferencias son significativas, porque sólo se pueden sobrecargar los argumentos de las funciones, y puede haber otros nombres de tipos en la plantilla que no estén relacionados con los argumentos. Y sólo pueden estar especializados. Por ejemplo, una plantilla sin argumentos:

template<typename T>
void f() { }

template<>
void f<int>() { }
 
Alexey Navoykov:
¿Especialización sin argumento? )) ¿En qué se especializará?
 
Комбинатор:
¿Especialización sin argumento? )) ¿Y para qué será la especialización?
Eso lo tendrás que decidir en el cuerpo de la función. ¿Qué pasa aquí? Tengo esa necesidad muy a menudo. Tengo que resolverlo pasando un parámetro ficticio, que es muy crujiente.
 
Alexey Navoykov:
¿Cuál es el problema?
Nada si consigues que se compile y se ejecute en los profesionales)
 

Inmediatamente después de la actualización a la compilación 1650, al arrastrar un Expert Draw no compilado desde el Navegador/Favoritos a un gráfico en lugar de que el MQL5 no pueda abrir el archivo 'Draw.ex5' -> se lanza otro Asesor Experto, concretamente, el ExpertMACD

Todo se arregló después de la compilación de Draw está terminado, pero el hecho

Me gustaría añadir: La situación se repite - ExpertMACD se lanza en lugar de cualquier Asesor Experto no compilado