Hello. Is there a way to use value returning C++0x lambdas with libsigc++? Functions not returning values work fine:
sigc::slot <void> slot1 = [] () { }; sigc::slot <void, int> slot2 = [] (int) { }; no compilation problems. However when a return value is added: sigc::slot <bool> slot3 = [] () -> bool { return true; }; sigc::slot <bool, int> slot4 = [] (int) -> bool { return true; }; I end up getting two compilation errors: /usr/include/sigc++-2.0/sigc++/functors/slot.h:103:36: error: void value not ignored as it ought to be /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251:21: error: return-statement with a value, in function returning 'void' Is that possible to achieve in some other way, or are lambdas with a return value not supported by libsigc++ yet? best regards Jakub Łukomski full output: In file included from test.cc:1:0: /usr/include/sigc++-2.0/sigc++/functors/slot.h: In static member function ‘static T_return sigc::internal::slot_call0<T_functor, T_return>::call_it(sigc::internal::slot_rep*) [with T_functor = main(int, char**)::<lambda()>, T_return = bool]’: /usr/include/sigc++-2.0/sigc++/functors/slot.h:110:45: instantiated from ‘static void* (* sigc::internal::slot_call0<T_functor, T_return>::address())(void*) [with T_functor = main(int, char**)::<lambda()>, T_return = bool, void* (*)(void*) = void* (*)(void*)]’ /usr/include/sigc++-2.0/sigc++/functors/slot.h:454:7: instantiated from ‘sigc::slot0<T_return>::slot0(const T_functor&) [with T_functor = main(int, char**)::<lambda()>, T_return = bool]’ /usr/include/sigc++-2.0/sigc++/functors/slot.h:1130:26: instantiated from ‘sigc::slot<T_return, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot(const T_functor&) [with T_functor = main(int, char**)::<lambda()>, T_return = bool]’ test.cc:8:57: instantiated from here /usr/include/sigc++-2.0/sigc++/functors/slot.h:103:36: error: void value not ignored as it ought to be In file included from /usr/include/sigc++-2.0/sigc++/functors/slot.h:7:0, from test.cc:1: /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h: In member function ‘sigc::adaptor_functor<T_functor>::result_type sigc::adaptor_functor<T_functor>::operator()() const [with T_functor = main(int, char**)::<lambda()>, sigc::adaptor_functor<T_functor>::result_type = void]’: /usr/include/sigc++-2.0/sigc++/functors/slot.h:103:36: instantiated from ‘static T_return sigc::internal::slot_call0<T_functor, T_return>::call_it(sigc::internal::slot_rep*) [with T_functor = main(int, char**)::<lambda()>, T_return = bool]’ /usr/include/sigc++-2.0/sigc++/functors/slot.h:110:45: instantiated from ‘static void* (* sigc::internal::slot_call0<T_functor, T_return>::address())(void*) [with T_functor = main(int, char**)::<lambda()>, T_return = bool, void* (*)(void*) = void* (*)(void*)]’ /usr/include/sigc++-2.0/sigc++/functors/slot.h:454:7: instantiated from ‘sigc::slot0<T_return>::slot0(const T_functor&) [with T_functor = main(int, char**)::<lambda()>, T_return = bool]’ /usr/include/sigc++-2.0/sigc++/functors/slot.h:1130:26: instantiated from ‘sigc::slot<T_return, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot(const T_functor&) [with T_functor = main(int, char**)::<lambda()>, T_return = bool]’ test.cc:8:57: instantiated from here /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251:21: error: return-statement with a value, in function returning 'void' -- Jakub Łukomski <d...@tenku.eu> _______________________________________________ libsigc-list mailing list libsigc-list@gnome.org http://mail.gnome.org/mailman/listinfo/libsigc-list