Skip to content

Make the lib compile on Ubuntu 25.10+26.04. #108

Open
sago007 wants to merge 1 commit intoartyom-beilis:masterfrom
sago007:ubuntu26_04
Open

Make the lib compile on Ubuntu 25.10+26.04. #108
sago007 wants to merge 1 commit intoartyom-beilis:masterfrom
sago007:ubuntu26_04

Conversation

@sago007
Copy link
Copy Markdown

@sago007 sago007 commented May 2, 2026

Compile fails without C++17. I have tested up to CMake 4.3.2.

I have set booster to not fail on new CMake versions for some time.

I have tested this (using Docker) on Ubuntu 22.04, Ubuntu 26.04, and Debian 13.

I have only touched the gcc path as it is the only one I can reliable test.

It currently fails with errors like:

/usr/include/unicode/char16ptr.h:370:36: note: ‘std::enable_if_t’ is only available from C++14 onwards
/usr/include/unicode/char16ptr.h:370:47: error: expected ‘>’ before ‘<’ token
  370 |           typename = typename std::enable_if_t<std::is_pointer_v<std::remove_reference_t<T>>>,

I found that I needed C++17 to make it compile. It does give some deprecation warnings about std::iterator but it works.

@artyom-beilis
Copy link
Copy Markdown
Owner

Which version of gcc? Because it builds without an issue on 22.04?

It seems it is rather related to that ICU requires c++17

/usr/include/unicode/char16ptr.h

Is ICU header

so if you build it with latest ICU that requires C++17 you need to bump the C++ version, if you build without ICU or with different version you don't need it

I think of several options:

  1. Check if ICU needs C++17 and than require this flag
  2. Check if you can work with C++14 since it is more reasonable requirement
  3. Move to C++17 and it opens lots of options in general

Let me think

@sago007
Copy link
Copy Markdown
Author

sago007 commented May 2, 2026

On ubuntu 25.10 I am running "gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0" this is where I got the issue and why I had to modify it. It worked fine on Ubuntu 24.04 LTS.

I was considering looking into CMAKE_CXX_STANDARD which sets a maximum C++ version and only uses C++17 if the compiler supports it. However I find CMake quite complicated and went for the minimal approach.

Trying in docker I realize I am unable to replicate the failure on a clean install. I might have to look at it a bit further.

EDIT: I found the issue to be that I had the package "libicu-dev" installed which is version 76.1 and that causes the failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants