View previous topic :: View next topic |
Author |
Message |
lefta n00b
Joined: 29 Apr 2011 Posts: 25
|
Posted: Sun Aug 12, 2012 11:45 am Post subject: [boost] Mes sources diffèrent de celles de la doc. (Résolu) |
|
|
Bonjour,
/!\ Malgré les apparences au début, ce n'est pas une question de programmation /!\
Je programme un jeu à mon compte pour le fun, et dans une classe je me sers des bimap de boost. Je peux utiliser la fonction at(), mais pas les crochets [] . Si j'utilise les crochets, le compilo me sort une erreur, qui -viendrait- de boost.
Je suis tombé, à moitié par hasard, sur les sources dans la doc, et voici la différence :
Sources de la doc :
Code: | template< class CompatibleKey >
data_type_ & operator[](const CompatibleKey& k)
{
typedef BOOST_DEDUCED_TYPENAME ::boost::bimaps::support::
iterator_type_by<Tag,BimapType>::type iterator;
typedef BOOST_DEDUCED_TYPENAME ::boost::bimaps::support::
value_type_by<Tag,BimapType>::type value_type;
iterator iter = derived().find(k);
if( iter == derived().end() )
{
iter = derived().insert( value_type(k,data_type_()) ).first;
}
return iter->second;
} |
Sources de portage, vérifiées dans l'archive directement :
Code: | template< class CompatibleKey >
data_type_ & operator[](const CompatibleKey& k)
{
BOOST_BIMAP_STATIC_ERROR( OPERATOR_BRACKET_IS_NOT_SUPPORTED, (Derived));
} |
Alors pourquoi cette fonction a été 'désimplémentée'?
La doc se sert des crochets, et j'ai besoin de pouvoir modifier mon bimap. at() retourne juste une reference constante
J'ai démasqué boost 1.50 pour tester, mais c'est pareil avec 1.49.
Ma question est donc : d'où celà vient-il? Est-ce modifié par les devs de gentoo? Est-ce une erreur venant de l'équipe de boost? Est-ce voulu ou pas?
(voire si quelqu'un a un moyen de contourner ce problème, je suis preneur, mais je sais que ce n'est pas un forum de prog )
Merci de vos réponses
Last edited by lefta on Sun Aug 12, 2012 12:59 pm; edited 1 time in total |
|
Back to top |
|
|
guilc Bodhisattva
Joined: 15 Nov 2003 Posts: 3326 Location: Paris - France
|
Posted: Sun Aug 12, 2012 11:56 am Post subject: |
|
|
Les sources que tu télécharges via portage sont les sources officielles (le tarball). Si patch gentoo il y a, c'est soit dans le sous-dossier "files/" du paquet dans l'arbre de portage, soit si le patchset est plus conséquent, dans un tar à part. L'explication la plus plausible est que ta doc n'est pas à jour, et référence des trucs pour les vieilles version de Boost qui ont depuis été changés pas les devs de Boost !
[EDIT]
Heu, On doit pas regarder au même endroit, parce que chez moi, c'est bon, le code issu de la doc que tu cites est bien présent au bon endroit dans les sources de la 1.49 _________________ Merci de respecter les règles du forum.
Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing
Last edited by guilc on Sun Aug 12, 2012 12:07 pm; edited 1 time in total |
|
Back to top |
|
|
lefta n00b
Joined: 29 Apr 2011 Posts: 25
|
Posted: Sun Aug 12, 2012 12:03 pm Post subject: |
|
|
Waw! Ça c'est de la reponse rapide
Sinon il ne semble pas s'agir d'un patch, puisque le code est prit directement depuis depuis l'archive de sources du dossier distfiles.
Et la doc est bien celle de 1.50, j'ai vérifié : http://www.boost.org/doc/libs/1_50_0/boost/bimap/detail/map_view_base.hpp.
Il me semblait que les sources étaient téléchargées depuis le dépot officiel.
Là j'avouerais que je comprends pas... L'erreur viendrait de boost?
Merci de ta reponse, je crois que vais aller faire un tour sur leurs forums |
|
Back to top |
|
|
guilc Bodhisattva
Joined: 15 Nov 2003 Posts: 3326 Location: Paris - France
|
Posted: Sun Aug 12, 2012 12:08 pm Post subject: |
|
|
lefta wrote: | Il me semblait que les sources étaient téléchargées depuis le dépot officiel. |
C'est le cas.
Quote: | Là j'avouerais que je comprends pas... L'erreur viendrait de boost? |
Vu que chez moi ce snippet de code est bien présent (voir mon edit au dessus).... Je penche plutôt pour un simple mésusage de la lib _________________ Merci de respecter les règles du forum.
Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing |
|
Back to top |
|
|
lefta n00b
Joined: 29 Apr 2011 Posts: 25
|
Posted: Sun Aug 12, 2012 12:11 pm Post subject: |
|
|
Là je comprends vraiment plus... Je remasque boost 1.50, puisque ça n'a rien à voir avec la 1.49, je supprime les distfiles, je re-sync l'arbre portage, je réinstalle et te tiens au courant
EDIT : Nan, même après avoir resyncronisé et retéléchargé, c'est toujours la même chose. Mais portage télécharge depuis distfiles.gentoo.org, ou un truc dans le genre. Existe-t-il un moyen de le forcer à télécharger depuis l'URI spécifiée dans l'ebuild?
EDIT 2 : Idem depuis Sourceforge. Tu as eu tes sources depuis Sourceforge? Ça commence à me chauffer cette histoire...
EDIT3 : Pff c'est bon j'ai compris... Il y a les deux bouts de code dans le fichier, je regardais pas exactement au même endroit. C'est implementé dans la class mutable_... mais pas dans non_mutable_... . Le bout de code qui ne fonctionne pas est ligne 360, l'autre est une quarantaine de lignes avant...
Merci du coup de patte Guilc
RÉSOLU |
|
Back to top |
|
|
guilc Bodhisattva
Joined: 15 Nov 2003 Posts: 3326 Location: Paris - France
|
Posted: Sun Aug 12, 2012 3:30 pm Post subject: |
|
|
lefta wrote: | EDIT : Nan, même après avoir resyncronisé et retéléchargé, c'est toujours la même chose. Mais portage télécharge depuis distfiles.gentoo.org, ou un truc dans le genre. Existe-t-il un moyen de le forcer à télécharger depuis l'URI spécifiée dans l'ebuild? |
C'est pareil !
les url "gentoo", c'est juste des miroirs : le principe c'est que les miroirs gentoo vont s'alimenter automatiquement sur la source d'origine décrite dans le SRC_URI. Cela permet d'alléger la charge sur le serveur d'origine. Mais les sources ne sont absolument pas modifiées. Pour preuve : elles ont les mêmes signatures (définies dans les fichiers Manifest).
Si tu tiens absolument à fetcher la source directement depuis le dépôt "officiel", il suffit de définir GENTOO_MIRRORS="". Mais c'est évidemment déconseillé et peu sympathique avec l'hébergement du projet (quand il s'agit de sourceforge, pas de souci, mais si le projet est hébergé sur une petite plateforme et que tout le monde fait ça, c'est pas super sympa...)
Quote: | EDIT 2 : Idem depuis Sourceforge. Tu as eu tes sources depuis Sourceforge? Ça commence à me chauffer cette histoire... |
Donc cf supra, non, depuis un quelconque miroir gentoo. Si l'ebuild s'installe, c'est que la signature du tarball est correcte, donc que les sources sont conformes à l'original
Quote: | EDIT3 : Pff c'est bon j'ai compris... Il y a les deux bouts de code dans le fichier, je regardais pas exactement au même endroit. C'est implementé dans la class mutable_... mais pas dans non_mutable_... . Le bout de code qui ne fonctionne pas est ligne 360, l'autre est une quarantaine de lignes avant...
Merci du coup de patte Guilc
RÉSOLU |
Arf _________________ Merci de respecter les règles du forum.
Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|