It's not possible to push_back in a vector of std::thread because std::thread is not copy-constructible. And moving to emplace_back triggers a method lookup error related to the custom allocator, as showcased in https://godbolt.org/z/jsbEKC.
That failure appears only on trunk GCC/libstdc++, by the looks of it? Does it matter that Clang doesn't compile on an unreleased compiler? (8.2 seems to compile the example OK) I can't seem to find a convenient web view of the current libstdc++ sources, so I'm only guessing, but that might well be a bug in trunk libstdc++.
Fedora is currently using gcc-9.0.1, svn revision 268719 (see https://src.fedoraproject.org/rpms/gcc/blob/master/f/gcc.spec) which triggers this issue. I'll forward the test case to the gcc team and report here.
GCC 9 isn't released yet, though - is this a release of Redhat or more "in-development Redhat is using in-development GCC"?
But yeah, I'd check with libstdc++ folks to see if this is a bug there. Vaguely looks like it.
- I am not sure what problem does it solve. Everything seems to work.
- We can now safely remove fuzzer_allocator and rename Vector to just plain std::vector. (we don't need this monstrosity any more since we are using private STL now)