#include <stdio.h> #include <sstream> int main(int ac, char **av) { std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > x; x << "How now brown cow"; return 0; }
If I build this on macOS 12, and try to run the binary on macOS 11, it fails because that symbol is not present in /usr/lib/libc++.1.dylib
. If I compile it on macOS 11, and run on 11 or later, it works.
Is this correct behaviour? Since the dylib version didn't change, I would expect that to mean no ABI changes.
And solved -- it needs to have -target ${arch}-apple-${os}${version}
, eg x86_64-apple-macos11.5
. And yes, it was vcpkg doing this. I can fix it by editing the triplets file, or I might some day do up a better diff and see how that goes. Or we could just drop support of macOS 11. But options, yay!