Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée
de la logique qui mène à ce bogue ? Surtout qu'en mettant
un int au lieu de std::string, le compilateur se plaint
correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir
si d'autres compilateurs tombent dans le panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée
de la logique qui mène à ce bogue ? Surtout qu'en mettant
un int au lieu de std::string, le compilateur se plaint
correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir
si d'autres compilateurs tombent dans le panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée
de la logique qui mène à ce bogue ? Surtout qu'en mettant
un int au lieu de std::string, le compilateur se plaint
correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir
si d'autres compilateurs tombent dans le panneau !
Michel Michaud a écrit:Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
Que se passe-t-il si tu fait :
int main()
{
std::cout << "begin of scope" << std::endl;
{
C c;
}
std::cout << "end of scope" << std::endl;
return 0;
}
Michel Michaud a écrit:
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
Que se passe-t-il si tu fait :
int main()
{
std::cout << "begin of scope" << std::endl;
{
C c;
}
std::cout << "end of scope" << std::endl;
return 0;
}
Michel Michaud a écrit:Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
Que se passe-t-il si tu fait :
int main()
{
std::cout << "begin of scope" << std::endl;
{
C c;
}
std::cout << "end of scope" << std::endl;
return 0;
}
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée de la
logique qui mène à ce bogue ? Surtout qu'en mettant un int au lieu
de std::string, le compilateur se plaint correctement... J'aimerais
bien comprendre s'il n'y a pas d'autres possibilités de bogues qui
seraient reliées et savoir si d'autres compilateurs tombent dans le
panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée de la
logique qui mène à ce bogue ? Surtout qu'en mettant un int au lieu
de std::string, le compilateur se plaint correctement... J'aimerais
bien comprendre s'il n'y a pas d'autres possibilités de bogues qui
seraient reliées et savoir si d'autres compilateurs tombent dans le
panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée de la
logique qui mène à ce bogue ? Surtout qu'en mettant un int au lieu
de std::string, le compilateur se plaint correctement... J'aimerais
bien comprendre s'il n'y a pas d'autres possibilités de bogues qui
seraient reliées et savoir si d'autres compilateurs tombent dans le
panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée
de la logique qui mène à ce bogue ? Surtout qu'en mettant
un int au lieu de std::string, le compilateur se plaint
correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir
si d'autres compilateurs tombent dans le panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée
de la logique qui mène à ce bogue ? Surtout qu'en mettant
un int au lieu de std::string, le compilateur se plaint
correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir
si d'autres compilateurs tombent dans le panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue, mais quelqu'un a-t-il une idée
de la logique qui mène à ce bogue ? Surtout qu'en mettant
un int au lieu de std::string, le compilateur se plaint
correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir
si d'autres compilateurs tombent dans le panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue,
mais quelqu'un a-t-il une idée de la logique qui mène à ce bogue ?
Surtout qu'en mettant un int au lieu de std::string, le compilateur se
plaint correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir si
d'autres compilateurs tombent dans le panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue,
mais quelqu'un a-t-il une idée de la logique qui mène à ce bogue ?
Surtout qu'en mettant un int au lieu de std::string, le compilateur se
plaint correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir si
d'autres compilateurs tombent dans le panneau !
Le code suivant compile sans problème avec VC 7.1 :
#include <string>
#include <iostream>
class C
{
std::string s; // Avec rien (ou int) ça ne compile pas
// Aucun destructeur déclaré...
};
C::~C()
{
std::cout << "Hum";
}
int main()
{
C c;
} // Affiche bien Hum, il voit donc le destructeur
C'est clairement un bogue,
mais quelqu'un a-t-il une idée de la logique qui mène à ce bogue ?
Surtout qu'en mettant un int au lieu de std::string, le compilateur se
plaint correctement... J'aimerais bien comprendre s'il n'y a pas
d'autres possibilités de bogues qui seraient reliées et savoir si
d'autres compilateurs tombent dans le panneau !
C'est clairement un bogue,
Selon quoi ? Moi, aussi, j'ai toujours crû que ça doit être une erreur
(et je crois que c'en était l'intention), mais je ne trouve pas où la
norme le dit. Il y a un destructeur déclaré. Implicitement, mais déclaré
quand même. Tu l'implémentes. Quoi de plus naturel ?
C'est clairement un bogue,
Selon quoi ? Moi, aussi, j'ai toujours crû que ça doit être une erreur
(et je crois que c'en était l'intention), mais je ne trouve pas où la
norme le dit. Il y a un destructeur déclaré. Implicitement, mais déclaré
quand même. Tu l'implémentes. Quoi de plus naturel ?
C'est clairement un bogue,
Selon quoi ? Moi, aussi, j'ai toujours crû que ça doit être une erreur
(et je crois que c'en était l'intention), mais je ne trouve pas où la
norme le dit. Il y a un destructeur déclaré. Implicitement, mais déclaré
quand même. Tu l'implémentes. Quoi de plus naturel ?
C'est clairement un bogue,
Selon quoi ? Moi, aussi, j'ai toujours crû que ça doit être une
erreur (et je crois que c'en était l'intention), mais je ne trouve
pas où la norme le dit. Il y a un destructeur déclaré.
Implicitement, mais déclaré quand même. Tu l'implémentes. Quoi de
plus naturel ?
J'ai l'impression que mon message précédent n'est pas passé... c'est
contraire à la norme (enfin dans le doc que j'ai récupéré qui est une
version qui date de septembre 2003)
Paragraphe 12 : toutes premières lignes :
on y dit que constructeur par défaut, constructeur de copie, operateur
d'assignement et destructeur sont des fonctions membres spéciales.
2 ou 3 lignes plus loins :
Un programme qui ne déclare pas une fonction membre spéciale mais la
défini est "malformé"
C'est clairement un bogue,
Selon quoi ? Moi, aussi, j'ai toujours crû que ça doit être une
erreur (et je crois que c'en était l'intention), mais je ne trouve
pas où la norme le dit. Il y a un destructeur déclaré.
Implicitement, mais déclaré quand même. Tu l'implémentes. Quoi de
plus naturel ?
J'ai l'impression que mon message précédent n'est pas passé... c'est
contraire à la norme (enfin dans le doc que j'ai récupéré qui est une
version qui date de septembre 2003)
Paragraphe 12 : toutes premières lignes :
on y dit que constructeur par défaut, constructeur de copie, operateur
d'assignement et destructeur sont des fonctions membres spéciales.
2 ou 3 lignes plus loins :
Un programme qui ne déclare pas une fonction membre spéciale mais la
défini est "malformé"
C'est clairement un bogue,
Selon quoi ? Moi, aussi, j'ai toujours crû que ça doit être une
erreur (et je crois que c'en était l'intention), mais je ne trouve
pas où la norme le dit. Il y a un destructeur déclaré.
Implicitement, mais déclaré quand même. Tu l'implémentes. Quoi de
plus naturel ?
J'ai l'impression que mon message précédent n'est pas passé... c'est
contraire à la norme (enfin dans le doc que j'ai récupéré qui est une
version qui date de septembre 2003)
Paragraphe 12 : toutes premières lignes :
on y dit que constructeur par défaut, constructeur de copie, operateur
d'assignement et destructeur sont des fonctions membres spéciales.
2 ou 3 lignes plus loins :
Un programme qui ne déclare pas une fonction membre spéciale mais la
défini est "malformé"