Tuples sont des dossiers avec les membres nommés 1 à n. Autrement dit, le tuple de trois éléments (a, b, c)
est vraiment un enregistrement {1 = a, 2 = b, 3 = c}
. Il n'y a donc pas besoin d'une conversion implicite entre les tuples et les enregistrements car ils sont déjà la même chose.
maintenant la fonction que vous avez définie prend un enregistrement avec les membres x
, y
et z
et vous passez un record avec les membres 1
, 2
et 3
. Cela ne fonctionne pas. Pour que cela fonctionne, il faudrait qu'il y ait une conversion implicite entre les enregistrements avec des noms de membres différents, ce qui semble être une très mauvaise idée.
(parce que ces conversions sont assez fréquentes en C++)
Il n'y a pas de conversions implicites en C++ entre struct ou sans rapport avec les classes avec des membres différents (ou même les mêmes membres). Pour ce faire, vous avez besoin d'un reinterpret_cast
(ou d'un pointeur de type C sur l'adresse), ce qui n'est ni courant ni une bonne idée (et ne fonctionnerait qu'avec tout autre type de POD).