Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2442 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++0x] decltype(a[0]) dans gcc4.4 marche ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++0x] decltype(a[0]) dans gcc4.4 marche ?

n°1937856
Lightness1​024
Posté le 04-11-2009 à 23:34:27  profilanswer
 

voici mon code:
 

Code :
  1. #include <array>
  2. #include <type_traits>
  3. std::array< char, 2 > const rule = {'e', 'f'};
  4. char b[1];
  5. static_assert( std::is_same<char, decltype(b[0])/*rule[0])*/>::value, "gcc bug ?" );


sortie:

g++ -std=c++0x c++0xtest.cpp --pedantic
c++0xtest.cpp:5: error: static assertion failed: "gcc bug ?"


si on utilise decltype(b) avec char b; ca fonctionne, normal. mais pas avec un tableau.
alors que sizeof(b[0]) fonctionne, pourquoi pas decltype ? est-ce un bug de gcc ?
 
évidemment mon but était de voir si récupérer le type de rule[0] donnait bien rule::value_type.
ceci passe tres bien par exemple:

Code :
  1. typedef std::array< char, 2 > T;
  2. static_assert( std::is_same<char, T::value_type>::value, "aie" ); //ok


mais on pouvait tres bien le faire en C++03 avec boost alors ca sert un peu a rien.


---------------
http://projets.6mablog.com/
mood
Publicité
Posté le 04-11-2009 à 23:34:27  profilanswer
 

n°1937877
Joel F
Real men use unique_ptr
Posté le 05-11-2009 à 06:52:29  profilanswer
 

t'as essayé en 2 coups ?
 

Code :
  1. typedef decltype(b[0]) type;
  2. static_assert( std::is_same<char, type>::value, "gcc bug ?" );


 
Sinon:
http://gcc.gnu.org/gcc-4.4/cxx0x_status.html

n°1938158
Lightness1​024
Posté le 05-11-2009 à 21:46:46  profilanswer
 

Joel F a écrit :

t'as essayé en 2 coups ?
 

Code :
  1. typedef decltype(b[0]) type;
  2. static_assert( std::is_same<char, type>::value, "gcc bug ?" );


 
Sinon:
http://gcc.gnu.org/gcc-4.4/cxx0x_status.html

oui j'y étais sur cette page :)
ils disent bien:

Declared type of an expression   N2343   Yes

Et d'ailleur, si je fait ca:

Code :
  1. std::cout << typeid(decltype(b[0])).name() << std::endl;
  2. std::cout << typeid(char).name() << std::endl;

j'ai bien deux fois "c" dans la console.
j'ai essayé avec le typedef entre les deux, ca ne change pas.
il me semble que le type retourné par le decltype et le type char sont bel et bien différent pour le solveur template.
(car is_same est juste une structure template<typename T, typename T> qui retourne vrai, avec une spécialisation template<typename T1, typename T2>qui retourne faux. donc la il voit pas que T est T)


---------------
http://projets.6mablog.com/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++0x] decltype(a[0]) dans gcc4.4 marche ?

 

Sujets relatifs
DROP CONSTRAINT ne marche pasz index ne marche pas overlay toujours en arrière plan
[résolu] 1 applet insérée 2 fois dont seule la première marcheImbrication de style CSS dans balises HTML ul li marche pas?
[RESOLU] Sous Eclipse l'exécution marche bien mais pas avec la comm[Résolu] popen marche pas ???
PHP : str_replace ne marche même pas[RESOLU] Lors de l'éxecution un coup ca marche, un coup ca marche pas
Macro qui ne marche plus sous Excel2007Requête SQL/PHP qui marche pas ?
Plus de sujets relatifs à : [c++0x] decltype(a[0]) dans gcc4.4 marche ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR