Maison >développement back-end >C++ >Pourquoi la déduction de modèle échoue-t-elle avec la conversion de type implicite pour les types définis par l'utilisateur ?
Conversion de type implicite et déduction de modèle
Lors d'une tentative de conversion implicite d'un int en un Scalar
Dans le code fourni :
<code class="cpp">func(a, 2);</code>
le le compilateur tente de convertir implicitement le int 2 en un Scalar
<code class="cpp">func(a, Scalar<int>{2}); // C++14</code>
Alternativement, si C 17 est utilisé, un guide de déduction peut être défini pour Scalar, permettant la syntaxe suivante :
<code class="cpp">func(a, Scalar{2});</code>
Enfin, l'instanciation explicite de la fonction modèle avec l'argument de type spécifié peut également contourner le besoin de conversion implicite :
<code class="cpp">func<int>(a, 2); // Assuming Scalar<T>::Scalar(T) is not explicit</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!