Bonjour !
J'explore en ce moment les nouvelles possibilités du C++0x, comme par exemple l'initialisation par accolade (Et je pose un copyright sur cette expression car c'est la première fois que je la vois traduite en français ) Avec GCC snapshot du 20100310, l'initialisation par accolade© de std::pair est possible :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::pair<int, double> p = {4, 5.0}; // OK!
Mais par pour les std::tuple !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::tuple<int, double> t = {4, 5.0}; // Ne compile pas.
error: converting to 'std::tuple<int, double>' from initializer list would use explicit constructor 'std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&)
[with _U1 = int, _U2 = double, _T1 = int, _T2 = double]'|
C'est vrai que dans le draft 3035, les différents constructeurs de std::pair ne sont pas marqué explicit alors que les deux constructeurs de std::tuple le sont.
Mais je ne comprends en fait pas bien quel est le rôle d'explicit dans l'échec de la compilation dans ce cas.

Des idées ?