Knut Petersen <knut_peter...@t-online.de> writes: > os / compiler > =========== > > os version: linux, openSUSE 13.2 (Harlequin) (x86_64) > gcc --version: (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
Pretty old as well. > git bisect log > ================= > git bisect start > # good: [f4e12f1b0cb5dfb32f193f87e7ca28c406b87771] Issue 2232: fix MIDI > output of abutting (de)crescendi > git bisect good f4e12f1b0cb5dfb32f193f87e7ca28c406b87771 > # bad: [a975d6f176453d35367e3fa4808c7061d326a9e7] Issue 4898: Set > rhythmic-location early in paper-column-engraver > git bisect bad a975d6f176453d35367e3fa4808c7061d326a9e7 > # good: [f9b2cfebb944a0ea7d7c35a583233c51039486aa] PO: update template. > git bisect good f9b2cfebb944a0ea7d7c35a583233c51039486aa > # bad: [f7013d65b51f1372dc31973b78bbe04f505ea569] Issue 4899/1: Let > method_finder also find listeners > git bisect bad f7013d65b51f1372dc31973b78bbe04f505ea569 > # good: [f869d8f6ebe878618588036e17971166721de9e0] Release: bump Welcome > versions. > git bisect good f869d8f6ebe878618588036e17971166721de9e0 > # good: [5dbaaca80b06fda4b0a3b9cdc67760a2735dbee1] Merge remote branch > 'origin/release/unstable' into HEAD > git bisect good 5dbaaca80b06fda4b0a3b9cdc67760a2735dbee1 > # good: [ec6b4cc313dd6a1aa4070080076da54b7f1c0c71] Release: bump VERSION. > git bisect good ec6b4cc313dd6a1aa4070080076da54b7f1c0c71 > # first bad commit: [f7013d65b51f1372dc31973b78bbe04f505ea569] Issue 4899/1: > Let method_finder also find listeners Ok, this is sort of a nuisance because I still have pending stuff in that exact area (starting with issue 4903) and the same engravers. At any rate, this implies that TRANSLATOR_INHERIT fails doing its job when it has to inherit overloaded template functions with a single "using" instruction. I propose the following patch (to current master). Does it change something for you?
>From fa45edd4db3d49817425fa7833559f20697c3c74 Mon Sep 17 00:00:00 2001 From: David Kastrup <d...@gnu.org> Date: Fri, 24 Jun 2016 15:10:44 +0200 Subject: [PATCH] Split overloaded `method_finder' in two Some older g++ compilers seem unhappy about the mixture of `using' instructions and overloading in connection with templates, so the overloaded way of calling `method_finder' is split into `method_finder' and `listen_finder'. --- lily/include/translator.hh | 8 +++++++- lily/include/translator.icc | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lily/include/translator.hh b/lily/include/translator.hh index cd05091..3a13f8a 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -39,6 +39,7 @@ #define TRANSLATOR_INHERIT(BASE) \ using BASE::method_finder; \ + using BASE::listen_finder; \ using BASE::ack_finder; #define DECLARE_TRANSLATOR_CALLBACKS(NAME) \ @@ -48,7 +49,7 @@ return Callback0_wrapper::make_smob<NAME, mf> (); \ } \ template <void (NAME::*mf)(Stream_event *)> \ - static SCM method_finder () \ + static SCM listen_finder () \ { \ return Callback_wrapper::make_smob<trampoline<NAME, mf> > (); \ } \ @@ -165,6 +166,11 @@ protected: // should be private. static SCM method_finder () { return SCM_UNDEFINED; } + // Overriden elsewhere but needed for TRANSLATOR_INHERIT + template <void (Translator::*)(Stream_event *)> + static SCM + listen_finder () { return SCM_UNDEFINED; } + // Overriden in Engraver. Don't instantiate. template <class T, void (T::*)(Grob_info)> static SCM ack_trampoline (SCM, SCM, SCM); diff --git a/lily/include/translator.icc b/lily/include/translator.icc index 3d038b6..cd9fa58 100644 --- a/lily/include/translator.icc +++ b/lily/include/translator.icc @@ -112,7 +112,7 @@ void add_acknowledger (SCM ptr, #define ADD_LISTENER(cl, m) \ listener_list_ = scm_acons \ (event_class_symbol (#m), \ - method_finder<&cl::listen_ ## m> (), \ + listen_finder<&cl::listen_ ## m> (), \ listener_list_) #endif /* TRANSLATOR_ICC */ -- 2.7.4
-- David Kastrup
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel