Twitter iPhone pliant OnePlus 12 PS5 Disney+ Orange Livebox Windows 11 ChatGPT

Construction d'un binder2nd

1 réponse
Avatar
Christophe Brun
Messieurs dames,

Allez, une petite question avant d'aller prendre un peu le frais en
Bretagne...
Soit le code suivant qui, comme vous vous en doutez, ne compile pas :
Code:

#include <functional>
typedef pair< long, long > range_T;
struct followsRange : public binary_function< const range_T&, const
range_T&, bool >
{
bool operator()( const range_T& range1_P, const range_T& range2_P )
const
{
return ( range2_P.first >= range1_P.second );
}
};

void Binders()
{
range_T range( 0, 0 );
followsRange fct;
binder2nd< followsRange > binder( fct, range );
}


Réponse du compilateur :
BCB5 a écrit:

[C++ Erreur] function.h(322): E2350 Impossible de définir un pointeur
ou une référence sur une référence
[C++ Erreur] Main.cpp(81): E2450 Structure 'binder2nd<followsRange>'
non définie


Question de votre dévoué serviteur :
Dévoué serviteur a écrit:

Pourquoi ?






begin 666 koi.gif
M1TE&.#EA% `4`,,!`/___P```%!OO ``````````````````````````````
M`````````````````````"'_"TY%5%-#05!%,BXP`P$````A^00!$@`/`"P`
M````% `4```$3/#)2:N],^B ;Q"@P'69^($CJ4D:ZFTIZV9GN)9I'=JXO/\B
MV>C3`@8?1*2MM>$E=34H4VG\1:G5Y4V7C?E,S5F%B^)YNBKNC82$D2(`(?D$
M`10`#P`L!0`"``@`"@``!!+PR1DF%<)*46WH6BB.I,5M700`(?D$`10`#P`L
M!0`"``@`"@``!!#PR2DF#<'JS;O_7% ]HA0!`"'Y! $4``\`+ 0``@`)``H`
M``00\,GY`IU!B,N[_V#891(I10`A_GM4:&ES(&%N:6UA=&5D($=)1B!F:6QE
M('=A<R!C;VYS=')U8W1E9"!U<VEN9R!5;&5A9"!'248@06YI;6%T;W(L('9I
M<VET('5S(&%T(&AT=' Z+R]W=W<N=6QE860N8V]M('1O(&9I;F0@;W5T(&UO
-<F4N`5534U!#350`.P``
`
end

1 réponse

Avatar
Christophe Brun
"Christophe Brun" a écrit dans le message de
news:3f2fa6af$0$9625$
Messieurs dames,

Ne cherchez plus, je tiens la réponse.

Pour ceux que ça intéresse, l'erreur vient d'une mauvaise déclaration des
arguments template dans la définition du foncteur followsRange :


struct followsRange : public binary_function< const range_T&, const
range_T&, bool >

{
bool operator()( const range_T& range1_P, const range_T&
range2_P ) const

{
return ( range2_P.first >= range1_P.second );
}
};


La déclaration correcte est en fait de la forme :

struct followsRange : public binary_function< range_T, range_T, bool >
{
bool operator()( const range_T& range1_P, const range_T& range2_P ) const
{
return ( range2_P.first >= range1_P.second );
}
};