Compile error on old clang versions
While compiling on Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
, bootstrapping stops on the following error:
clang++ -std=gnu++11 -DCMAKE_BOOTSTRAP -I/Users/cmake/Downloads/cmake-3.21.2/Bootstrap.cmk -I/Users/cmake/Downloads/cmake-3.21.2/Source -I/Users/cmake/Downloads/cmake-3.21.2/Source/LexerParser -I/Users/cmake/Downloads/cmake-3.21.2/Utilities/std -I/Users/cmake/Downloads/cmake-3.21.2/Utilities -c /Users/cmake/Downloads/cmake-3.21.2/Source/cmInstallScriptGenerator.cxx -o cmInstallScriptGenerator.o
/Users/cmake/Downloads/cmake-3.21.2/Source/cmInstallRuntimeDependencySet.cxx:60:41: error: chosen constructor is explicit in copy-initialization
auto it = targetDepends.insert({ tgt, {} });
^~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/set:428:14: note: constructor declared here
explicit set(const value_compare& __comp = value_compare())
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:262:37: note: passing argument to parameter '__y' here
pair(const _T1& __x, const _T2& __y)
^
1 error generated.
The fix, in my case was to change auto it = targetDepends.insert({ tgt, {} });
to auto it = targetDepends.insert({ tgt, std::set<const cmGeneratorTarget*>() });