Pour revenir a ton probleme, il existe une specification (que je n'ai jamais utilise) qui permet de dire au compilateur qu'il n'y aura pas d'exceptions pendant la construction (ou tout autre methode) de ton objet:
Et la ca compile, ce qui prouve bien que c'etait bien le probleme. Par contre __declspec(nothrow) est Microsoft specific donc pas portable. Sur gcc l'equivalent ca serait __attribute__((nothrow)).Code:
1
2
3
4
5
6
7
8
9
10
11
12 class C { void operator delete(void *,size_t ) { } public: __declspec(nothrow) C() { } }; int _tmain(int argc, _TCHAR* argv[]) { new C; }
Il semble que l'equivalent a __declspec(nothrow) (en tout cas sur VC2005) soit:
A savoir qu'en l'absence de cet attribut, c'est comme si le constructeur etait declare comme ceci:Code:
1
2 C() throw() { }
VC: http://msdn.microsoft.com/en-us/library/49147z04.aspxCode:
1
2 C() throw(...) { }
Bon week end a tous :mouarf: