[sigc] where is error? reference binding is impossible?



Apparently f1() _is_ called, but with a reference pointing to a wrong
place in memory...


#include <iostream>

#include <sigc++/sigc++.h>


namespace
{

  void
  f1 (int& x)
  {
    x = 1;
  }


  void
  f2 (int* x)
  {
    *x = 1;
  }

}


int
main ()
{
  int  x1 = 0;

  std::cout << "x1 = " << x1 << '\n';

  sigc::slot <void>  _f1 = sigc::bind (&f1, x1);
  _f1 ();

  std::cout << "x1 = " << x1 << '\n';

  int  x2 = 0;

  std::cout << "x2 = " << x2 << '\n';

  sigc::slot <void>  _f2 = sigc::bind (&f2, &x2);
  _f2 ();

  std::cout << "x2 = " << x2 << '\n';

  return 0;
}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]