template<int acycle> angle(angle<acycle> a) { agl=middleman<acycle>().get(a); } };
int main() { angle<5> aa; angle<6> bb(aa);
return 0; }
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Davidbrcz <davidbrcz@gmail.com> writes:
On 20 mar, 22:57, Davidbrcz <davidb...@gmail.com> wrote:
Bonjour à tous.
Le code suivant me donne un problème d'accessibilité dans
middleman::get.
template<int cycle> class angle
{
protected:
int agl;
template <int N> struct middleman
{
friend class angle<N>;
template<int acycle> angle(angle<acycle> a)
{ agl=middleman<acycle>().get(a); }
};
int main()
{
angle<5> aa;
angle<6> bb(aa);
return 0;
}
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
template<int acycle> angle(angle<acycle> a) { agl=middleman<acycle>().get(a); } };
int main() { angle<5> aa; angle<6> bb(aa);
return 0; }
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Davidbrcz
On 21 mar, 09:54, Jean-Marc Bourguet wrote:
template<int cycle> class angle { protected: int agl; public: template <int N> struct middleman { int get(const angle<N> a) {return a.agl;} };
template<int acycle> angle(angle<acycle> a) { agl=middleman<acycle>().get(a); }
};
int main() { angle<5> aa; angle<6> bb(aa);
return 0;
}
Hum. La compilation plante sur la déclaration d'amitié: a.cpp:15: error: too many template-parameter-lists
Je compile avec g++ 4.3.3 sous debian sid
Effectivement. Ca passe avec Comeau, g++ 4.2 mais pas avec g++ 4.3, Sun CC ni icpc.
J'ai pas le temps pour le moment de chercher qui a raison et qui a tord, ni de trouver une alternative.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Davidbrcz <davidbrcz@gmail.com> writes:
On 21 mar, 09:54, Jean-Marc Bourguet <j...@bourguet.org> wrote:
template<int cycle> class angle
{
protected:
int agl;
public:
template <int N> struct middleman
{
int get(const angle<N> a)
{return a.agl;}
};
template<int acycle> angle(angle<acycle> a)
{ agl=middleman<acycle>().get(a); }
};
int main()
{
angle<5> aa;
angle<6> bb(aa);
return 0;
}
Hum. La compilation plante sur la déclaration d'amitié:
a.cpp:15: error: too many template-parameter-lists
Je compile avec g++ 4.3.3 sous debian sid
Effectivement.
Ca passe avec Comeau, g++ 4.2 mais pas avec g++ 4.3, Sun CC ni icpc.
J'ai pas le temps pour le moment de chercher qui a raison et qui a tord, ni
de trouver une alternative.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
template<int acycle> angle(angle<acycle> a) { agl=middleman<acycle>().get(a); }
};
int main() { angle<5> aa; angle<6> bb(aa);
return 0;
}
Hum. La compilation plante sur la déclaration d'amitié: a.cpp:15: error: too many template-parameter-lists
Je compile avec g++ 4.3.3 sous debian sid
Effectivement. Ca passe avec Comeau, g++ 4.2 mais pas avec g++ 4.3, Sun CC ni icpc.
J'ai pas le temps pour le moment de chercher qui a raison et qui a tord, ni de trouver une alternative.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Davidbrcz
On 21 mar, 11:51, Jean-Marc Bourguet wrote:
Davidbrcz writes: > On 21 mar, 09:54, Jean-Marc Bourguet wrote:
>> template<int cycle> class angle >> { >> protected: >> int agl; >> public: >> template <int N> struct middleman >> { >> int get(const angle<N> a) >> {return a.agl;} >> };
>> template <int cycle2> >> template <int N> >> friend int ::angle<cycle2>::template middleman<N>::get(con st angle<N>);
>> public: >> angle(int a=0){agl=a;};
>> template<int acycle> angle(angle<acycle> a) >> { agl=middleman<acycle>().get(a); }
> Hum. La compilation plante sur la déclaration d'amitié: > a.cpp:15: error: too many template-parameter-lists
> Je compile avec g++ 4.3.3 sous debian sid
Effectivement. Ca passe avec Comeau, g++ 4.2 mais pas avec g++ 4.3, Sun CC ni icpc.
J'ai pas le temps pour le moment de chercher qui a raison et qui a tord, ni de trouver une alternative.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF:http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index .html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avec cette déclaration, ca marche avec g++ 4.3 template <int cycle2> template <int N> friend int ::angle<cycle>::template middleman<N>::get(const angle<N>);
On 21 mar, 11:51, Jean-Marc Bourguet <j...@bourguet.org> wrote:
Davidbrcz <davidb...@gmail.com> writes:
> On 21 mar, 09:54, Jean-Marc Bourguet <j...@bourguet.org> wrote:
>> template<int cycle> class angle
>> {
>> protected:
>> int agl;
>> public:
>> template <int N> struct middleman
>> {
>> int get(const angle<N> a)
>> {return a.agl;}
>> };
>> template <int cycle2>
>> template <int N>
>> friend int ::angle<cycle2>::template middleman<N>::get(con st angle<N>);
>> public:
>> angle(int a=0){agl=a;};
>> template<int acycle> angle(angle<acycle> a)
>> { agl=middleman<acycle>().get(a); }
> Hum. La compilation plante sur la déclaration d'amitié:
> a.cpp:15: error: too many template-parameter-lists
> Je compile avec g++ 4.3.3 sous debian sid
Effectivement.
Ca passe avec Comeau, g++ 4.2 mais pas avec g++ 4.3, Sun CC ni icpc.
J'ai pas le temps pour le moment de chercher qui a raison et qui a tord, ni
de trouver une alternative.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF:http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index .html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avec cette déclaration, ca marche avec g++ 4.3
template <int cycle2>
template <int N>
friend int ::angle<cycle>::template middleman<N>::get(const
angle<N>);
> Hum. La compilation plante sur la déclaration d'amitié: > a.cpp:15: error: too many template-parameter-lists
> Je compile avec g++ 4.3.3 sous debian sid
Effectivement. Ca passe avec Comeau, g++ 4.2 mais pas avec g++ 4.3, Sun CC ni icpc.
J'ai pas le temps pour le moment de chercher qui a raison et qui a tord, ni de trouver une alternative.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF:http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index .html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avec cette déclaration, ca marche avec g++ 4.3 template <int cycle2> template <int N> friend int ::angle<cycle>::template middleman<N>::get(const angle<N>);
Davidbrcz
On 21 mar, 12:56, Davidbrcz wrote:
JMB > Sais tu où je pourrais apprendre ce genre de subtilités ? Car cette syntaxe est quand même hard et je ne comprends pas tout, en particulier le template qui se balade au millieu.
Merci.
On 21 mar, 12:56, Davidbrcz <davidb...@gmail.com> wrote:
JMB > Sais tu où je pourrais apprendre ce genre de subtilités ? Car
cette syntaxe est quand même hard et je ne comprends pas tout, en
particulier le template qui se balade au millieu.
JMB > Sais tu où je pourrais apprendre ce genre de subtilités ? Car cette syntaxe est quand même hard et je ne comprends pas tout, en particulier le template qui se balade au millieu.
Merci.
Jean-Marc Bourguet
Davidbrcz writes:
On 21 mar, 12:56, Davidbrcz wrote:
JMB > Sais tu où je pourrais apprendre ce genre de subtilités ? Car cette syntaxe est quand même hard et je ne comprends pas tout, en particulier le template qui se balade au millieu.
Ce template est l'équivalent du typename. Il indique qu'un nom dépendant est un template.
La référence pour le moment, ça reste le bouquin de D. Vandevoorde et de N. Josuttis, C++ Templates, The Complete Guide.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Davidbrcz <davidbrcz@gmail.com> writes:
On 21 mar, 12:56, Davidbrcz <davidb...@gmail.com> wrote:
JMB > Sais tu où je pourrais apprendre ce genre de subtilités ? Car
cette syntaxe est quand même hard et je ne comprends pas tout, en
particulier le template qui se balade au millieu.
Ce template est l'équivalent du typename. Il indique qu'un nom dépendant
est un template.
La référence pour le moment, ça reste le bouquin de D. Vandevoorde et de
N. Josuttis, C++ Templates, The Complete Guide.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
JMB > Sais tu où je pourrais apprendre ce genre de subtilités ? Car cette syntaxe est quand même hard et je ne comprends pas tout, en particulier le template qui se balade au millieu.
Ce template est l'équivalent du typename. Il indique qu'un nom dépendant est un template.
La référence pour le moment, ça reste le bouquin de D. Vandevoorde et de N. Josuttis, C++ Templates, The Complete Guide.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org