Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C++20 module support #255

Draft
wants to merge 85 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 74 commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
6d31440
Initial impl
anarthal Dec 30, 2024
8b95972
Test: quick
anarthal Dec 31, 2024
a88ac69
Test: from_chars
anarthal Dec 31, 2024
0fca203
Test: to_chars
anarthal Dec 31, 2024
d8af7a6
Fixed include for non-modular build
anarthal Dec 31, 2024
21d38be
Test: roundtrip
anarthal Dec 31, 2024
cff3f1d
Test: from_chars_STL
anarthal Dec 31, 2024
469db1c
Test: to_chars_STL
anarthal Dec 31, 2024
1b24348
Ensure roundtrip doesn't use EQ
anarthal Dec 31, 2024
b5fb386
Test: limits
anarthal Dec 31, 2024
608b335
Test: to_chars_snprintf
anarthal Dec 31, 2024
14253a0
global_module_fragment header
anarthal Dec 31, 2024
fd08bf7
Test: num_digits
anarthal Dec 31, 2024
4542891
Test: limits_link_1
anarthal Dec 31, 2024
03f19d1
Test: 128_native
anarthal Dec 31, 2024
740e951
Test: 128_emulation
anarthal Dec 31, 2024
08987cc
Make private headers include-able in tests
anarthal Dec 31, 2024
78048a5
compute_float80
anarthal Dec 31, 2024
788cba1
Test: compute_float64
anarthal Dec 31, 2024
4fd5597
Made compute_float64 more self-contained
anarthal Dec 31, 2024
7520a28
Test: compute_float32
anarthal Dec 31, 2024
d0d126e
Use library-specific export macro
anarthal Dec 31, 2024
8133fe7
Test: parser
anarthal Dec 31, 2024
3d8af3b
Made fallback_routines.hpp more self-contained
anarthal Dec 31, 2024
3234d01
Test: from_chars_float
anarthal Dec 31, 2024
4b7b876
Test: to_chars_float
anarthal Dec 31, 2024
2672609
Remove GMF include from from_chars_float
anarthal Dec 31, 2024
81e21fd
Test: boost_json_values
anarthal Dec 31, 2024
05b9ea2
Test: to_chars_STL
anarthal Dec 31, 2024
4010c95
Test: from_chars_float2
anarthal Dec 31, 2024
e9d3a34
Test: P2497
anarthal Dec 31, 2024
00cbf99
Test: issue 110
anarthal Dec 31, 2024
992ba1b
Test: issue 122
anarthal Dec 31, 2024
efb3beb
Test: from_chars_string_view
anarthal Dec 31, 2024
1ef56a9
Test: issue 152
anarthal Dec 31, 2024
fd5101b
Test: issue 154
anarthal Dec 31, 2024
ec4c0b4
Test: issue 158
anarthal Dec 31, 2024
cb9c4f6
Remaining issue tests
anarthal Dec 31, 2024
4771447
Jamfile
anarthal Jan 1, 2025
849ba2c
Removed references to boost/config/modules.hpp
anarthal Jan 3, 2025
ca1b388
Sanitize charconv/config.hpp
anarthal Jan 3, 2025
b558891
Restored missing includes
anarthal Jan 3, 2025
b8f6435
Migrate to export using
anarthal Jan 10, 2025
10987d2
Undo move headers to private
anarthal Jan 10, 2025
1fc1e43
Header cleanup
anarthal Jan 10, 2025
00633f1
Restore Jamfile
anarthal Jan 10, 2025
f754fe9
Merge branch 'develop' into feature/cxx20-modules
anarthal Jan 10, 2025
45fdf62
detail/config is now a regular header
anarthal Jan 10, 2025
aaba7a0
Move away from Boost.CMake function
anarthal Jan 10, 2025
afe4f4b
Missing include in non-modular build
anarthal Jan 10, 2025
e33012b
Guard include in constexpr_feature_detect
anarthal Jan 10, 2025
bb01acc
Finalized making detail/config a regular header
anarthal Jan 10, 2025
272e77d
Correct include in compute_float80
anarthal Jan 10, 2025
4526a5d
impl_macros.hpp
anarthal Jan 10, 2025
6c93b72
restore tests that are not run with modules
anarthal Jan 10, 2025
28ab577
Remove back from_chars_strtod
anarthal Jan 10, 2025
0d7e445
Test cleanup 1
anarthal Jan 10, 2025
25a494b
Remove to_chars_float_fallback
anarthal Jan 10, 2025
4bbe46a
Last test cleanup
anarthal Jan 10, 2025
8f0d876
Modules cis (1)
anarthal Jan 10, 2025
404b663
Force run
anarthal Jan 10, 2025
8d587c0
Missing CMAKE_C_COMPILER
anarthal Jan 10, 2025
1e11414
Update CMake max version in tests
anarthal Jan 10, 2025
9ebf983
Remove unnecessary CMAKE_C_COMPILER arg
anarthal Jan 10, 2025
b0b8683
Fix include ifdef
anarthal Jan 11, 2025
c549dee
Make certain variables inline constexpr
anarthal Jan 11, 2025
d9fd5c7
Migrate to import in GMF
anarthal Jan 11, 2025
9176eb3
Remove CMake warning suppression
anarthal Jan 11, 2025
f55ea63
Remove explicit disabling of C++ extensions in CMake tests
anarthal Jan 11, 2025
af5d88a
Restore bit_layouts & cleanup
anarthal Jan 11, 2025
3bd370d
Cleanup cpp files
anarthal Jan 11, 2025
3e0d0db
Add CIs back
anarthal Jan 11, 2025
0b43cfb
Test cleanup 1
anarthal Jan 11, 2025
65e5356
Test cleanup 2
anarthal Jan 11, 2025
3c62c5d
Initial implementation of compatibility headers
anarthal Jan 14, 2025
fbc1c42
Refactor public macros
anarthal Jan 14, 2025
2956bc3
Move some tests to compatibility headers
anarthal Jan 14, 2025
2f423f6
Migrate the library to compatibility headers
anarthal Jan 14, 2025
2c54c75
Migrate more tests to compatibility headers
anarthal Jan 14, 2025
bcc4720
Remove uses of macro HUGE_VAL*
anarthal Jan 14, 2025
128fd88
Migrate all tests to compatibility headers
anarthal Jan 14, 2025
78464f3
Missing includes in tests
anarthal Jan 15, 2025
e019bcd
Remove before_impl_headers
anarthal Jan 15, 2025
76f9b77
Remove instances of BOOST_CHARCONV_SOURCE
anarthal Jan 15, 2025
4f27753
Add config to CI
anarthal Jan 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
312 changes: 312 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -763,3 +763,315 @@ jobs:

- name: Run tests
run: ci/build.sh


posix-cmake-subdir-modules:
runs-on: ubuntu-latest
container: ubuntu:24.10

steps:
- uses: actions/checkout@v4

- name: Install packages
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y --no-install-recommends ninja-build cmake git ca-certificates python3 python-is-python3 \
clang-19 llvm-19 libclang-rt-19-dev libc++-19-dev libc++abi-19-dev clang-tools-19

- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py $LIBRARY
python libs/charconv/tools/setup_boost_with_modules.py # Temporary

- name: Use library with add_subdirectory
run: |
cd ../boost-root/libs/$LIBRARY/test/cmake_subdir_test
mkdir __build__ && cd __build__
cmake -DBOOST_USE_MODULES=1 -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_CXX_FLAGS=-stdlib=libc++ -DCMAKE_EXE_LINKER_FLAGS=-stdlib=libc++ -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -G Ninja ..
cmake --build .
ctest --output-on-failure --no-tests=error

posix-cmake-install-modules:
env:
CMAKE_ARGS: -DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_CXX_FLAGS=-stdlib=libc++ -DCMAKE_EXE_LINKER_FLAGS=-stdlib=libc++ -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -G Ninja

runs-on: ubuntu-latest
container: ubuntu:24.10

steps:
- uses: actions/checkout@v4

- name: Install packages
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y --no-install-recommends ninja-build cmake git ca-certificates python3 python-is-python3 \
clang-19 llvm-19 libclang-rt-19-dev libc++-19-dev libc++abi-19-dev clang-tools-19

- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py $LIBRARY
python libs/charconv/tools/setup_boost_with_modules.py # Temporary

- name: Configure
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DCMAKE_INSTALL_PREFIX=~/.local -DBOOST_USE_MODULES=1 \
-DCMAKE_C_COMPILER=clang-19 $CMAKE_ARGS ..

- name: Install
run: |
cd ../boost-root/__build__
cmake --build . --target install

- name: Use the installed library
run: |
cd ../boost-root/libs/$LIBRARY/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=~/.local $CMAKE_ARGS ..
cmake --build .
ctest --output-on-failure --no-tests=error

posix-cmake-test-modules:
strategy:
fail-fast: false
matrix:
include:
- cmake-build-type: Debug
- cmake-build-type: Release

runs-on: ubuntu-latest
container: ubuntu:24.10

steps:
- uses: actions/checkout@v4

- name: Install packages
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y --no-install-recommends ninja-build cmake git ca-certificates python3 python-is-python3 \
clang-19 llvm-19 libclang-rt-19-dev libc++-19-dev libc++abi-19-dev clang-tools-19

- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python3 tools/boostdep/depinst/depinst.py $LIBRARY
python3 libs/charconv/tools/setup_boost_with_modules.py # Temporary

- name: Configure
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=${{matrix.cmake-build-type}} -DBOOST_USE_MODULES=1 -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_CXX_FLAGS=-stdlib=libc++ -DCMAKE_EXE_LINKER_FLAGS=-stdlib=libc++ -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -G Ninja ..

- name: Build tests
run: |
cd ../boost-root/__build__
cmake --build . --target tests

- name: Run tests
run: |
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error

windows-cmake-subdir-modules:
runs-on: windows-2022

steps:
- uses: actions/checkout@v4

- name: Install packages
run: choco install --no-progress ninja

- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
python libs/charconv/tools/setup_boost_with_modules.py # Temporary

- name: Use library with add_subdirectory
shell: cmd
run: |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test
mkdir __build__ && cd __build__
cmake -DBOOST_USE_MODULES=1 -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -G Ninja ..
cmake --build .
ctest --output-on-failure --no-tests=error

windows-cmake-install-modules:
runs-on: windows-2022

steps:
- uses: actions/checkout@v4

- name: Install packages
run: choco install --no-progress ninja

- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
python libs/charconv/tools/setup_boost_with_modules.py # Temporary

- name: Configure
shell: cmd
run: |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix -DBOOST_USE_MODULES=1 -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -G Ninja ..

- name: Install
shell: cmd
run: |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/__build__
cmake --build . --target install

- name: Use the installed library
shell: cmd
run: |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -G Ninja ..
cmake --build .
ctest --output-on-failure --no-tests=error

windows-cmake-test-modules:
strategy:
fail-fast: false
matrix:
include:
- cmake-build-type: Debug
- cmake-build-type: Release

runs-on: windows-2022

steps:
- uses: actions/checkout@v4

- name: Install packages
run: choco install --no-progress ninja

- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
python libs/charconv/tools/setup_boost_with_modules.py # Temporary

- name: Configure
shell: cmd
run: |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DBUILD_TESTING=ON -DBOOST_USE_MODULES=1 -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -DCMAKE_BUILD_TYPE=${{matrix.cmake-build-type}} -G Ninja ..

- name: Build tests
shell: cmd
run: |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/__build__
cmake --build . --target tests

- name: Run tests
shell: cmd
run: |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error
11 changes: 10 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Distributed under the Boost Software License, Version 1.0.
# https://www.boost.org/LICENSE_1_0.txt

cmake_minimum_required(VERSION 3.8...3.20)
cmake_minimum_required(VERSION 3.8...3.31)

project(boost_charconv VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)

Expand All @@ -14,6 +14,15 @@ add_library(boost_charconv

add_library(Boost::charconv ALIAS boost_charconv)

if (BOOST_USE_MODULES)
target_sources(boost_charconv PUBLIC FILE_SET CXX_MODULES BASE_DIRS modules FILES modules/boost_charconv.cppm)

# Enable and propagate C++23, import std, and the modules macro
target_compile_features(boost_charconv PUBLIC cxx_std_23)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you tried this with C++20 instead of 23? I know officially import std and import std.compat are C++23, but all of the compiler implementors have said they'll allow it at 20.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think there's a use to it? My understanding was that using C++20 over C++23 is about being able to use older compilers that might not support C++23. Such compilers won't have proper module implementations, likely, since modules are quite behind everything else.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Standards like MISRA are pinned to language standards not toolchains. Theoretically someone could have a modern compiler but be stuck at C++20. Probably best to have someone in the real world complain before changing it.

set_target_properties(boost_charconv PROPERTIES CXX_MODULE_STD 1)
target_compile_definitions(boost_charconv PUBLIC BOOST_USE_MODULES)
endif()

target_include_directories(boost_charconv PUBLIC include)


Expand Down
2 changes: 2 additions & 0 deletions include/boost/charconv/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt

#ifndef BOOST_USE_MODULES
#include <boost/config.hpp>
#include <climits>
#endif

// This header implements separate compilation features as described in
// http://www.boost.org/more/separate_compilation.html
Expand Down
5 changes: 4 additions & 1 deletion include/boost/charconv/detail/apply_sign.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
#ifndef BOOST_CHARCONV_DETAIL_APPLY_SIGN_HPP
#define BOOST_CHARCONV_DETAIL_APPLY_SIGN_HPP

#include <boost/config.hpp>
#include <boost/charconv/detail/emulated128.hpp>
#include <boost/charconv/detail/type_traits.hpp>
#ifndef BOOST_USE_MODULES
#include <boost/config.hpp>
#include <type_traits>
#endif


// We are purposefully converting values here
#ifdef BOOST_MSVC
Expand Down
3 changes: 3 additions & 0 deletions include/boost/charconv/detail/bit_layouts.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@

#include <boost/charconv/detail/config.hpp>
#include <boost/charconv/detail/emulated128.hpp>
#ifndef BOOST_USE_MODULES
#include <cstdint>
#include <cfloat>
#endif


// Layouts of floating point types as specified by IEEE 754
// See page 23 of IEEE 754-2008
Expand Down
3 changes: 3 additions & 0 deletions include/boost/charconv/detail/buffer_sizing.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@

#include <boost/charconv/detail/config.hpp>
#include <boost/charconv/detail/integer_search_trees.hpp>
#ifndef BOOST_USE_MODULES
#include <type_traits>
#endif


namespace boost {
namespace charconv {
Expand Down
Loading
Loading