[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: