I made the following literal changes to sigc++/functors/slot.h: LIBSIGC_TEMPLATE_PREFIX is now empty. and SIGC_WORKAROUND_OPERATOR_PARENTHESES is sun_forte_workaround so you get lines like:return (typed_rep->functor_). sun_forte_workaround<typename type_trait<T_arg1>::take>
When (incrementally) building test_slot.cc I get:CC -I. -I. -I.. -I.. -I.. -DG_HAVE_ISO_VARARGS -DG_IMPLEMENT_INLINES -I/opt/gnome-2.4/include -g -c -o test_slot.o `test -f 'test_slot.cc' || echo './'`test_slot.cc "../sigc++/functors/slot.h", line 122: Error: Unexpected type name "sigc::type_trait<int>::take" encountered. "../sigc++/functors/slot.h", line 122: Error: sun_forte_workaround is not a member of sigc::adaptor_functor<foo>. "../sigc++/functors/slot.h", line 123: Error: "static sigc::internal::slot_call1<foo, void, int>::call_it(sigc::internal::slot_rep*, const int&)" cannot return a value. "../sigc++/functors/slot.h", line 122: Error: Unexpected type name "sigc::type_trait<char>::take" encountered. "../sigc++/functors/slot.h", line 122: Error: sun_forte_workaround is not a member of sigc::adaptor_functor<foo>. "../sigc++/functors/slot.h", line 123: Error: "static sigc::internal::slot_call1<foo, void, char>::call_it(sigc::internal::slot_rep*, const char&)" cannot return a value. "../sigc++/functors/slot.h", line 122: Error: Unexpected type name "sigc::type_trait<std::string &>::take" encountered. "../sigc++/functors/slot.h", line 122: Error: sun_forte_workaround is not a member of sigc::adaptor_functor<foo>. "../sigc++/functors/slot.h", line 123: Error: "static sigc::internal::slot_call1<foo, void, std::string &>::call_it(sigc::internal::slot_rep*, std::string &)" cannot return a value.
9 Error(s) detected. make: *** [test_slot.o] Error 9FYI: I am out of the office from end of business today until Tuesday April 13th. If you need anything checked before then, get it to me by 4:30pm Irish time today.
Damien. Murray Cumming wrote:
On Mon, 2004-03-29 at 11:59, Damien Carbery wrote:I put the '.' back in so the line is: // Space after '.' before SIGC_WORK...return (typed_rep->functor_). SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::take>OK, so my configure-time test wasn't working quite right, and it looks like SIGC_WORKAROUND_OPERATOR_PARENTHESES isn't working either. On your platform I think LIBSIGC_TEMPLATE_PREFIX should be empty, and SIGC_WORKAROUND_OPERATOR_PARENTHESES should be sun_forte_workaround These are defined in sigc++/adaptors/adaptor_trait.h. Maybe you could check their values and hard-code them to check that it would work. It's very difficult to do this without direct access, but I'm fairly confident that it's possible to get this working on Sun Forte C++ 5.5. Thanks for helping.
Attachment:
slot.h.gz
Description: application/gzip