Comment #1 on issue 2088 by russell....@gmail.com: pointer confusion with clang++
http://code.google.com/p/lilypond/issues/detail?id=2088

The existing code uses a G++ extension (described in GCC manual 7.6), which allows this conversion of member function pointer to straight function pointer. If you remove the -Wno-pmf-conversions from makefile in lily directory, you will see warnings from g++ at the same places clang++ shows errors.

These warnings/errors can be eliminated by changing the two typedefs at the end of lily-proto.hh to:

typedef void (Engraver::* Engraver_void_function_engraver_grob_info) (Grob_info);
typedef void (Translator::* Translator_void_method_ptr) ();

but this creates trouble when the pointers are used, for example in Translator_method_binding::invoke(). I have to head to work now, but I will look more closely at it over the weekend and see if I can suggest a fix. The extension is presumably used as an optimization, so obviously it would be best if the solution does not create performance problems.


_______________________________________________
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond

Reply via email to