Bug de compilador com parâmetro de modelo = vazio* - página 20

 
pavlick_:

Lâmpada de botão através de g com virtualidade:

exemplos hackneyed.

Isto não é um exemplo de polimorfismo nem um exemplo de padrão. É apenas um exemplo de utilização de uma variável bool e nada mais (além de uma espessa camada de huskies).

É impossível que os modelos possam substituir o polimorfismo.

 
Dmitry Fedoseev:

Os gabaritos não podem substituir de forma alguma o polimorfismo.

Onde eu disse o contrário? A questão é que o polimorfismo está tentando substituir os modelos.

 
pavlick_:

E onde eu afirmei o contrário? A questão é que o polimorfismo tenta substituir os gabaritos.

É preferível que você esteja tentando substituir a abordagem OOP normal por uma muleta) Os modelos são na verdade necessários apenas para dados armazenados e em algumas interfaces como IComparable<T>.

Praticamente não há benefícios de desempenho deles. Em seu segundo exemplo, o compilador inlui tudo, porque ali tudo é inequívoco.

 
Alexey Navoykov:

É preferível que você esteja tentando substituir a abordagem OOP normal por uma muleta) Os modelos são na verdade necessários apenas para dados armazenados e em algumas interfaces como IComparable<T>.

Praticamente não há benefícios de desempenho deles. Em seu segundo exemplo, o compilador inlui tudo, porque ali tudo é inequívoco.

Não é o meu exemplo, é um exemplo clássico de inversão de dependência. E não se preocupe com sua simplicidade, apenas demonstra uma idéia, se eu escrevesse uma folha de código, você diria "bem, sim, isso é uma coisa diferente"?

Os gabaritos tornaram-se uma muleta, sim . . Muito bem, vou dar o dia por terminado.

 
A propósito, de volta ao vazio*, acabei de perceber que mesmo o dynamic_cast não funciona (não compila) com ele em C++, o que é lógico, pois temos apenas um ponteiro impessoal para uma área de memória. É por isso que ele só pode ser lançado explicitamente. Por isso, o vazio* por si só é inútil em C++. Tudo é diferente em MQL. Mas para fins de compatibilidade, devemos evitar o uso de dynamic_cast e excluir com apontadores do tipo void*.