Package: lilypond Version: 2.4.5-2 Severity: serious Tags: patch lilypond fails to build because some explicit template specializations are not preceded by "template <>" (I have no idea what this clause means):
> rm -f ./out/interval.dep; DEPENDENCIES_OUTPUT="./out/interval.dep > ./out/interval.o" g++ -c -DHAVE_CONFIG_H -DNDEBUG -DSTRING_UTILS_INLINED > -Iinclude -I./out -I../flower/include -I../flower/./out -O2 > -finline-functions -g -pipe -DNDEBUG -I/usr/include/python2.3 -O2 > -finline-functions -g -pipe -DNDEBUG -I/usr/include/python2.3 -W -Wall > -Wconversion -o out/interval.o interval.cc > include/real.hh: In function 'T max(T, T)': > include/real.hh:33: warning: minimum/maximum operators are deprecated > include/real.hh: In function 'T min(T, T)': > include/real.hh:44: warning: minimum/maximum operators are deprecated > include/interval.hh: In member function 'void Interval_t<T>::add_point(T)': > include/interval.hh:55: warning: minimum/maximum operators are deprecated > include/interval.hh:56: warning: minimum/maximum operators are deprecated > include/interval.hh: At global scope: > include/interval.hh:145: warning: minimum/maximum operators are deprecated > include/interval.hh:145: warning: minimum/maximum operators are deprecated > include/interval.hh:145: warning: minimum/maximum operators are deprecated > include/interval.hh:145: warning: minimum/maximum operators are deprecated > include/string-data.icc: In member function 'void String_data::remax(int)': > include/string-data.icc:93: warning: minimum/maximum operators are deprecated > include/string.hh: At global scope: > include/string.hh:189: warning: minimum/maximum operators are deprecated > include/string.hh:189: warning: minimum/maximum operators are deprecated > include/string.hh:189: warning: minimum/maximum operators are deprecated > include/string.hh:189: warning: minimum/maximum operators are deprecated > include/interval.tcc: In member function 'void > Interval_t<T>::unite(Interval_t<T>)': > include/interval.tcc:93: warning: minimum/maximum operators are deprecated > include/interval.tcc:94: warning: minimum/maximum operators are deprecated > include/interval.tcc: In member function 'void > Interval_t<T>::intersect(Interval_t<T>)': > include/interval.tcc:102: warning: minimum/maximum operators are deprecated > include/interval.tcc:103: warning: minimum/maximum operators are deprecated > interval.cc: At global scope: > interval.cc:15: error: explicit specialization of 'Real > Interval_t<Real>::infinity()' must be introduced by 'template <>' > interval.cc:15: error: template-id 'infinity<>' for 'Real > Interval_t<Real>::infinity()' does not match any template declaration > interval.cc:15: error: invalid function declaration > interval.cc:21: error: explicit specialization of 'String > Interval_t<Real>::T_to_string(Real)' must be introduced by 'template <>' > interval.cc:21: error: template-id 'T_to_string<>' for 'String > Interval_t<Real>::T_to_string(Real)' does not match any template declaration > interval.cc:21: error: invalid function declaration > interval.cc:28: error: explicit specialization of 'int > Interval_t<int>::infinity()' must be introduced by 'template <>' > interval.cc:28: error: template-id 'infinity<>' for 'int > Interval_t<int>::infinity()' does not match any template declaration > interval.cc:28: error: invalid function declaration > interval.cc:34: error: explicit specialization of 'String > Interval_t<int>::T_to_string(int)' must be introduced by 'template <>' > interval.cc:34: error: template-id 'T_to_string<>' for 'String > Interval_t<int>::T_to_string(int)' does not match any template declaration > interval.cc:34: error: invalid function declaration The attached patch, extracted from upstream, fixes these problems by adding "template <>" before the explicit template specializations. -- Matt
only in patch2: unchanged: --- lilypond-2.4.5.orig/flower/interval.cc +++ lilypond-2.4.5/flower/interval.cc @@ -11,12 +11,14 @@ #include "real.hh" #include "interval.tcc" +template <> Real Interval_t<Real>::infinity () { return HUGE_VAL; } +template <> String Interval_t<Real>::T_to_string (Real r) { @@ -24,12 +26,14 @@ } +template <> int Interval_t<int>::infinity () { return INT_MAX; } +template <> String Interval_t<int>::T_to_string (int i) { only in patch2: unchanged: --- lilypond-2.4.5.orig/lily/template5.cc +++ lilypond-2.4.5/lily/template5.cc @@ -13,6 +13,7 @@ #include "interval.tcc" #include "compare.hh" +template <> Rational Interval_t<Rational>::infinity () { @@ -21,6 +22,7 @@ return infty; } +template <> String Interval_t<Rational>::T_to_string (Rational a) {
signature.asc
Description: Digital signature