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

