Bonjour à tous.

Le code suivant ne compile ni sous g++ 3.4.2, ni sous comeau 4.3.3 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#include <iostream>
#include <vector>
#include <iterator>
 
void str_acc(std::string& str_result, std::string s)
{
   str_result += s;
}
 
int main()
{
   std::vector<std::string> v;
   std::string str_result;
 
   v.push_back("test1");
   v.push_back("test2");
 
   std::for_each(v.begin(), v.end(), 
      std::bind1st(ptr_fun(&str_acc), str_result));
 
   std::cout << str_result;
}
mais il marche en changeant la référence en pointeur dans les arguments
de str_acc.

Il semble y avoir un problème de référence sur référence.
Est-il interdit d'avoir des arguments de type référence dans les objets
fonctions ?
Ou des objets fonctions de tel type pour bind1st et bind2nd ?

Merci.