On Tuesday, February 18, 2020, at 9:25 AM +0100, Olaf van der Spek wrote: > What about the C++ std version? Abseil / C++14 isn't the same as Abseil / > C++17.
This is true on two levels: 1. By default, Abseil detects what standard version you’re building with and conditionally defines its types to be type aliases when appropriate. For instance, in C++11, `absl::make_unique` is an actual function; in C++14 and later, `absl::make_unique` is an alias for `std::make_unique`. The next LTS release will have a CMake toggle you can set to disable this behavior, I think it would be most user-friendly for us to set it. It’s less efficient to ship an Abseil in which `absl::make_unique` is always an actual function, but I think it’s better than shipping an Abseil that can only be used with one version of the C++ standard. 2. Abseil may use some language features that changed semantics in C++17 and are therefore ABI-incompatible with translation units compiled against a different standard. I spoke with an Abseil developer about this today, and he believes it’s not likely to be an issue. Abseil does not plumb the depths of the C++ language spec (except possibly the template engine), so provided (1) is resolved, it’s entirely possible that a binary Abseil will work everywhere. We won’t really know until we package it and let it soak in testing for a while.