2 votes

Dlang : Les objets Const ayant une sémantique de valeur ne peuvent pas être utilisés dans les rhs de l'affectation

L'extrait suivant est une erreur de compilation indiquant que la variable c de type const(B) ne peut être converti en ulong .

import std.typecons;

void main()
{
    Typedef!(ulong, -1, "B") b;
    const(Typedef!(ulong, -1, "B")) c = 0;
    b = c;
}

Cependant, la version équivalente utilisant le type simple sous-jacent ulong compile bien.

N'est-ce pas l'idée d'un Typedef qu'il doit fonctionner exactement comme le type sous-jacent sans permettre les conversions implicites vers/depuis le type sous-jacent ? Pourquoi y a-t-il une différence dans ce cas ?

3voto

Adam D. Ruppe Points 10493

Typedef n'est tout simplement pas écrit en pensant aux gendarmes. Il devrait offrir une fonction qui prend le const et l'assigne au payload, mais ne le fait pas.

Donc un bogue causé par un oubli de l'auteur. En fait, je ne prends pas le Typedef de Phobos très au sérieux, c'est une chose bizarre. Je préfère écrire moi-même des structs pour mes types.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X