Bug#888705: abseil-cpp packaging
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.
Reply to: