J'ai une classe A:conversion implicite à un objet C++ modèle
template <typename T, int I> struct A {};
et classe B. Je voudrais de type B objet à convertir implicitement à A quand donné comme arguments de la fonction. B ressemble à ceci:
template <typename T>
struct B {
operator A<T,0> &() const { return *new A<T,0>(); }
};
Cependant, mon test (ci-dessous) échoue avec GCC 4.5, ce qui donne l'erreur: aucune fonction de mise en correspondance pour l'appel à 'test (B &)' Où vais-je pas ici? Est-ce que d'autres compilateurs rejettent aussi cela?
template <typename T, int I>
void test(A<T,I> &a) { delete &a; }
int main(int argc, char *argv[])
{
B<int> b;
test(b);
return 0;
}
p.s. J'ai maintenant mis ma propre solution dans une réponse ci-dessous.
Je tiens à signaler la fuite de mémoire, mais il semble que cela a été tout simplement mis en place pour mettre en valeur la question, je ne vais pas. Je vais upvote à la place. :-) – James
classe? -------- –
Merci James :) Correction. – user2023370