diff --git a/.github/workflows/ci-conan.yml b/.github/workflows/ci-conan.yml index 569d4458..1525ed23 100644 --- a/.github/workflows/ci-conan.yml +++ b/.github/workflows/ci-conan.yml @@ -61,6 +61,12 @@ jobs: compiler: { type: CLANG, version: 12, cc: "clang-12", cxx: "clang++-12" }, lib: "libc++" } + - { + name: "Ubuntu Clang 13.0.0 + libc++", + os: ubuntu-20.04, + compiler: { type: CLANG, version: 13, cc: "clang-13", cxx: "clang++-13" }, + lib: "libc++" + } # In case a Conan docker image will be needed to provide a specific configuration we can use a Docker image as follows # - { # name: "Ubuntu GCC 10.2.0", @@ -89,7 +95,7 @@ jobs: if: matrix.config.compiler.type == 'CLANG' && matrix.config.lib == 'libc++' shell: bash run: | - sudo apt install -y libc++-${{ matrix.config.compiler.version }}-dev libc++abi-${{ matrix.config.compiler.version }}-dev + sudo apt install -y libc++-${{ matrix.config.compiler.version }}-dev libc++abi-${{ matrix.config.compiler.version }}-dev libunwind-${{ matrix.config.compiler.version }}-dev - name: Install Ninja # TODO Find a proper syntax to make the below work # if: !matrix.config.docker_image @@ -120,6 +126,12 @@ jobs: conan profile update settings.compiler.libcxx=${{ matrix.config.lib }} default fi conan profile show default + - name: Add support for clang-13 to Conan's settings.yml + # TODO Remove when Conan will support clang-13 + if: matrix.config.compiler.type == 'CLANG' + shell: bash + run: | + sed -i -e 's/"8", "9", "10", "11", "12"]/"8", "9", "10", "11", "12", "13"]/' ~/.conan/settings.yml - name: Run Conan Package Tools shell: bash env: diff --git a/.github/workflows/ci-test-package-cmake.yml b/.github/workflows/ci-test-package-cmake.yml index e97c43fa..f3342aa1 100644 --- a/.github/workflows/ci-test-package-cmake.yml +++ b/.github/workflows/ci-test-package-cmake.yml @@ -65,6 +65,12 @@ jobs: compiler: { type: CLANG, version: 12, cc: "clang-12", cxx: "clang++-12" }, lib: "libc++" } + - { + name: "Ubuntu Clang 13.0.0 + libc++", + os: ubuntu-20.04, + compiler: { type: CLANG, version: 13, cc: "clang-13", cxx: "clang++-13" }, + lib: "libc++" + } # In case a Conan docker image will be needed to provide a specific configuration we can use a Docker image as follows # - { # name: "Ubuntu GCC 10.2.0", @@ -105,7 +111,7 @@ jobs: if: matrix.config.compiler.type == 'CLANG' && matrix.config.lib == 'libc++' shell: bash run: | - sudo apt install -y libc++-${{ matrix.config.compiler.version }}-dev libc++abi-${{ matrix.config.compiler.version }}-dev + sudo apt install -y libc++-${{ matrix.config.compiler.version }}-dev libc++abi-${{ matrix.config.compiler.version }}-dev libunwind-${{ matrix.config.compiler.version }}-dev - name: Install Ninja # TODO Find a proper syntax to make the below work # if: !matrix.config.docker_image @@ -138,6 +144,12 @@ jobs: conan profile update settings.compiler.libcxx=${{ matrix.config.lib }} default fi conan profile show default + - name: Add support for clang-13 to Conan's settings.yml + # TODO Remove when Conan will support clang-13 + if: matrix.config.compiler.type == 'CLANG' + shell: bash + run: | + sed -i -e 's/"8", "9", "10", "11", "12"]/"8", "9", "10", "11", "12", "13"]/' ~/.conan/settings.yml - name: Install Conan dependencies shell: bash run: | diff --git a/docs/framework/quantities.rst b/docs/framework/quantities.rst index ea880ac2..9ad71b36 100644 --- a/docs/framework/quantities.rst +++ b/docs/framework/quantities.rst @@ -121,13 +121,19 @@ They are defined using the `reference` class template:: namespace length_references { inline constexpr auto km = reference{}; - inline constexpr auto h = reference{}; } // namespace length_references + namespace time_references { + + inline constexpr auto h = reference{}; + + } // namespace time_references + namespace references { using namespace length_references; + using namespace time_references; } // namespace references diff --git a/example/kalman_filter/kalman.h b/example/kalman_filter/kalman.h index 3e416a8b..f78cc289 100644 --- a/example/kalman_filter/kalman.h +++ b/example/kalman_filter/kalman.h @@ -75,7 +75,7 @@ public: uncertainty_type uncertainty; }; -#if UNITS_COMP_CLANG == 12 || UNITS_COMP_MSVC +#if UNITS_COMP_CLANG <= 13 || UNITS_COMP_MSVC template estimation(state, U) -> estimation; diff --git a/src/core/include/units/bits/external/hacks.h b/src/core/include/units/bits/external/hacks.h index 847293f5..20579827 100644 --- a/src/core/include/units/bits/external/hacks.h +++ b/src/core/include/units/bits/external/hacks.h @@ -66,9 +66,10 @@ #endif -#if UNITS_COMP_CLANG == 12 && UNITS_LIBCXX +#if UNITS_LIBCXX + +#if UNITS_COMP_CLANG == 12 -#include #include #include #include @@ -76,6 +77,12 @@ #include #include +#elif UNITS_COMP_CLANG == 13 + +#include + +#endif + #endif #include @@ -99,7 +106,9 @@ namespace std { template concept default_constructible = constructible_from; -#elif UNITS_COMP_CLANG && UNITS_LIBCXX +#elif UNITS_LIBCXX + +#if UNITS_COMP_CLANG == 12 // concepts using concepts::common_with; @@ -209,6 +218,14 @@ constexpr bool in_range(T t) noexcept std::cmp_less_equal(t, std::numeric_limits::max()); } +#elif UNITS_COMP_CLANG == 13 + +using concepts::three_way_comparable; +using concepts::three_way_comparable_with; +using ::ranges::compare_three_way; + +#endif + #endif } // namespace std