While upgrading taglib to 2.0, I ran into some build failures as shown below:
clang++ -DHAVE_CONFIG_H -I. -I/opt/homebrew/Cellar/taglib/2.0/include -I/opt/homebrew/Cellar/taglib/2.0/include/taglib -g -O2 -MT mp3unicode.o -MD -MP -MF .deps/mp3unicode.Tpo -c -o mp3unicode.o mp3unicode.cpp
clang++ -DHAVE_CONFIG_H -I. -I/opt/homebrew/Cellar/taglib/2.0/include -I/opt/homebrew/Cellar/taglib/2.0/include/taglib -g -O2 -MT messages.o -MD -MP -MF .deps/messages.Tpo -c -o messages.o messages.cpp
mv -f .deps/messages.Tpo .deps/messages.Po
In file included from mp3unicode.cpp:24:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/fileref.h:29:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tfile.h:29:
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tbytevector.h:627:29: error: expected ';' at end of declaration list
void swap(ByteVector &v) noexcept;
^
;
In file included from mp3unicode.cpp:24:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/fileref.h:29:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tfile.h:33:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tag.h:30:
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tstring.h:502:25: error: expected ';' at end of declaration list
void swap(String &s) noexcept;
^
;
In file included from mp3unicode.cpp:24:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/fileref.h:29:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tfile.h:33:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tag.h:31:
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.h:76:15: error: no template named 'initializer_list' in namespace 'std'
List(std::initializer_list<T> init);
~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.h:272:29: error: no template named 'initializer_list' in namespace 'std'
List<T> &operator=(std::initializer_list<T> init);
~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.h:277:26: error: expected ';' at end of declaration list
void swap(List<T> &l) noexcept;
^
;
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.h:314:34: error: a space is required between consecutive right angle brackets (use '> >')
std::shared_ptr<ListPrivate<T>> d;
^~
> >
In file included from mp3unicode.cpp:24:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/fileref.h:29:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tfile.h:33:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tag.h:31:
In file included from /opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.h:323:
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:45:8: error: function definition does not declare parameters
bool autoDelete{};
^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:54:26: error: using declaration cannot refer to a constructor
using ListPrivateBase::ListPrivateBase;
~~~~~~~~~~~~~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:56:20: error: no template named 'initializer_list' in namespace 'std'
ListPrivate(std::initializer_list<TP> init) : list(init) {}
~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:70:26: error: using declaration cannot refer to a constructor
using ListPrivateBase::ListPrivateBase;
~~~~~~~~~~~~~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:72:20: error: no template named 'initializer_list' in namespace 'std'
ListPrivate(std::initializer_list<TP *> init) : list(init) {}
~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:79:8: error: call to non-static member function 'autoDelete' of 'List' from nested type 'ListPrivate<TP *>'
if(autoDelete) {
^~~~~~~~~~
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:94:35: error: a space is required between consecutive right angle brackets (use '> >')
d(std::make_shared<ListPrivate<T>>())
^~
> >
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:102:20: error: no template named 'initializer_list' in namespace 'std'
List<T>::List(std::initializer_list<T> init) :
~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:103:35: error: a space is required between consecutive right angle brackets (use '> >')
d(std::make_shared<ListPrivate<T>>(init))
^~
> >
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:311:34: error: no template named 'initializer_list' in namespace 'std'
List<T> &List<T>::operator=(std::initializer_list<T> init)
~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:320:15: error: out-of-line declaration of a member must be a definition [-Wout-of-line-declaration]
void List<T>::swap(List<T> &l) noexcept
~~~~~~~~~^
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:320:31: error: expected ';' at end of declaration
void List<T>::swap(List<T> &l) noexcept
^
;
/opt/homebrew/Cellar/taglib/2.0/include/taglib/tlist.tcc:320:32: error: a type specifier is required for all declarations
void List<T>::swap(List<T> &l) noexcept
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [mp3unicode.o] Error 1
make[1]: *** [install-recursive] Error 1
make: *** [install] Error 2
full build logs in here, https://gist.github.com/chenrui333/02f70444de9ac03a71542be648fd9e8e
and here, https://github.com/Homebrew/homebrew-core/actions/runs/8403688708/job/23014483001?pr=166984
relates to Homebrew/homebrew-core#166984
While upgrading taglib to 2.0, I ran into some build failures as shown below:
full build logs in here, https://gist.github.com/chenrui333/02f70444de9ac03a71542be648fd9e8e
and here, https://github.com/Homebrew/homebrew-core/actions/runs/8403688708/job/23014483001?pr=166984
relates to Homebrew/homebrew-core#166984