Remove redundant checks with C++11
Individual changes:
1) Drop check for std::vector::data()
The corresponding code was already removed in 2015, commit d36ec1303b
("Issue 4577: Remove the nasty workaround for platforms that don't
provide std::vector::data().").
2) flower: Rely on [v]snprintf from libc
These are required in C++11 according to
https://en.cppreference.com/w/cpp/io/c/fprintf
https://en.cppreference.com/w/cpp/io/c/vfprintf
While editing config.hh.in, also get rid of unused HAVE_LRINT.
3) Drop check for explicit template instantiation
The define was unused and as far as I can tell, the code is valid
C++ and should just always work.
One thing that I have mused about at times is the separation of files
flower/include/interval.tcc
lily/include/smobs.tcc
that makes sense for implementations with a template repository approach (something that was considered/implemented in early C++ implementations but has been outmoded long ago).
Maybe those should just get folded into their respective include files? If so, at the bottom, or dispersed logically?
Not necessarily as part of this patch. Just something that might make sense at some point of time.
One could argue that it still makes sense to kind of separate the declaration from the template implementation. I don't have a strong opinion here.
[FWIW and totally unrelated to this issue (well, that's what I muse about): I tried to reduce the amount of templates in smobs.tcc at least twice. That would be nice because I think it would be one of the easiest gains to reduce compile time - right now, every TU instantiates some tens of
Smob_base<T>and the duplicated code is only dropped at the link stage, the duplicated debug information probably never. Unfortunately I failed so far because the code extensively uses static functions, something that cannot easily be replaced by polymorphism as I would do in an object-oriented language.]Diff:
Passes make, make check and a full make doc.
Patch on countdown for Feb 24th
Patch counted down - please push
pushed to
stagingas