Merge branch 'development' into future

This commit is contained in:
Roland Reichwein 2026-10-13 09:33:59 +02:00 committed by GitHub
commit 1293aa7903
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
49 changed files with 699 additions and 6746 deletions

View File

@ -50,7 +50,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -78,7 +78,7 @@ jobs:
export CXX=clang++
export CXXFLAGS="-stdlib=libc++"
export LDFLAGS="-stdlib=libc++"
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -99,7 +99,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -50,7 +50,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -78,7 +78,7 @@ jobs:
export CXX=clang++
export CXXFLAGS="-stdlib=libc++"
export LDFLAGS="-stdlib=libc++"
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -99,7 +99,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -50,7 +50,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -78,7 +78,7 @@ jobs:
export CXX=clang++
export CXXFLAGS="-stdlib=libc++"
export LDFLAGS="-stdlib=libc++"
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -99,7 +99,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -62,7 +62,7 @@ jobs:
export CXX=clang++-17
export CXXFLAGS="-stdlib=libc++"
export LDFLAGS="-stdlib=libc++"
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
clang-17 --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -90,7 +90,7 @@ jobs:
run: |
export CC=clang-17
export CXX=clang++-17
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
clang-17 --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -118,7 +118,7 @@ jobs:
run: |
export CC=clang-17
export CXX=clang++-17
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
clang-17 --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -146,7 +146,7 @@ jobs:
run: |
export CC=clang-17
export CXX=clang++-17
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
clang-17 --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -167,7 +167,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -188,7 +188,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -209,7 +209,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -230,7 +230,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -57,7 +57,7 @@ jobs:
export CXX=clang++
export CXXFLAGS="-stdlib=libc++"
export LDFLAGS="-stdlib=libc++"
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -86,7 +86,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -107,7 +107,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -128,7 +128,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -149,7 +149,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -170,7 +170,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -191,7 +191,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -212,7 +212,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -55,7 +55,7 @@ jobs:
export CXX=clang++ && \
export CXXFLAGS=-stdlib=libc++ && \
export LDFLAGS=-stdlib=libc++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
clang --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -76,7 +76,7 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
clang --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -97,7 +97,7 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
clang --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -118,7 +118,7 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
clang --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -139,7 +139,7 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
clang --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -158,7 +158,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -179,7 +179,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -200,7 +200,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -221,7 +221,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -49,7 +49,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -67,7 +67,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -85,7 +85,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -103,7 +103,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -121,7 +121,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -139,7 +139,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -157,7 +157,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -175,7 +175,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -193,7 +193,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -211,7 +211,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -229,7 +229,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -247,7 +247,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -265,7 +265,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -283,7 +283,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -301,7 +301,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -319,7 +319,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -337,7 +337,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -355,7 +355,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -373,7 +373,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -391,7 +391,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -409,7 +409,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -427,7 +427,7 @@ jobs:
run: |
export CC=clang
export CXX=clang++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
clang --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -447,7 +447,7 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
clang++ --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"
@ -467,7 +467,7 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
clang++ --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"
@ -487,7 +487,7 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
clang++ --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"
@ -507,6 +507,6 @@ jobs:
cd /workspaces/etl && \
export CC=clang && \
export CXX=clang++ && \
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
clang++ --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"

View File

@ -51,7 +51,7 @@ jobs:
git fetch
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -73,7 +73,7 @@ jobs:
git fetch
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -50,7 +50,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -71,7 +71,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -50,7 +50,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -71,7 +71,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -50,7 +50,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -71,7 +71,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -92,7 +92,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -113,7 +113,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -49,7 +49,7 @@ jobs:
- name: Build and run tests
run: |
docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-armhf bash -c "\
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
-DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/armhf/toolchain-armhf.cmake \
-DEXTRA_TESTING_FLAGS=-v \
./ && \

View File

@ -49,7 +49,7 @@ jobs:
- name: Build and run tests
run: |
docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-i386 bash -c "\
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
-DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/i386/toolchain-i386.cmake \
-DEXTRA_TESTING_FLAGS=-v \
./ && \

View File

@ -49,7 +49,7 @@ jobs:
- name: Build and run tests
run: |
docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-powerpc bash -c "\
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
-DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/powerpc/toolchain-powerpc.cmake \
-DEXTRA_TESTING_FLAGS=-v \
./ && \

View File

@ -49,7 +49,7 @@ jobs:
- name: Build and run tests
run: |
docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-riscv64 bash -c "\
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
-DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/riscv64/toolchain-riscv64.cmake \
-DEXTRA_TESTING_FLAGS=-v \
./ && \

View File

@ -49,7 +49,7 @@ jobs:
- name: Build and run tests
run: |
docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-s390x bash -c "\
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
-DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/s390x/toolchain-s390x.cmake \
-DEXTRA_TESTING_FLAGS=-v \
./ && \

View File

@ -50,7 +50,7 @@ jobs:
run: |
export CC=gcc-14
export CXX=g++-14
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
gcc-14 --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -71,7 +71,7 @@ jobs:
run: |
export CC=gcc-14
export CXX=g++-14
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
gcc-14 --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -92,7 +92,7 @@ jobs:
run: |
export CC=gcc-14
export CXX=g++-14
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
gcc-14 --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -113,7 +113,7 @@ jobs:
run: |
export CC=gcc-14
export CXX=g++-14
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./
gcc-14 --version
make -j "$(getconf _NPROCESSORS_ONLN)"

View File

@ -52,7 +52,7 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -73,7 +73,7 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -94,7 +94,7 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"
@ -115,7 +115,7 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN) && \
./test/etl_tests -v"

View File

@ -49,7 +49,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -67,7 +67,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -85,7 +85,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -103,7 +103,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -121,7 +121,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -139,7 +139,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -157,7 +157,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -175,7 +175,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -193,7 +193,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -211,7 +211,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -229,7 +229,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -247,7 +247,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -265,7 +265,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -283,7 +283,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -301,7 +301,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -319,7 +319,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -337,7 +337,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -355,7 +355,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -373,7 +373,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -391,7 +391,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -409,7 +409,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -427,7 +427,7 @@ jobs:
run: |
export CC=gcc
export CXX=g++
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
gcc --version
make -j "$(getconf _NPROCESSORS_ONLN)"
@ -447,7 +447,7 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"
@ -467,7 +467,7 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"
@ -487,7 +487,7 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"
@ -507,6 +507,6 @@ jobs:
cd /workspaces/etl && \
export CC=gcc && \
export CXX=g++ && \
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \
gcc --version && \
make -j \$(getconf _NPROCESSORS_ONLN)"

View File

@ -54,7 +54,7 @@ jobs:
- name: Build
run: |
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
MSBuild.exe -version
MSBuild.exe .\etl.sln
@ -79,7 +79,7 @@ jobs:
- name: Build
run: |
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
MSBuild.exe -version
MSBuild.exe .\etl.sln
@ -105,7 +105,7 @@ jobs:
- name: Build
run: |
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
MSBuild.exe -version
MSBuild.exe .\etl.sln
@ -131,7 +131,7 @@ jobs:
- name: Build
run: |
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./
MSBuild.exe -version
MSBuild.exe .\etl.sln

View File

@ -123,6 +123,7 @@ const_reference operator[](size_t i) const
```
**Description**
Returns a reference or const reference to the indexed element.
Emits an `etl::circular_buffer_out_of_bounds` if ETL_CHECK_INDEX_OPERATOR is defined and the index is out of range of the circular buffer. Undefined behaviour if asserts or exceptions are not enabled.
---

View File

@ -92,7 +92,7 @@ const T& at(size_t i) const
```
**Description**
Returns a reference or const reference to the indexed element.
Emits an `etl::deque_out_of_range` if the index is out of range of the array. Undefined behaviour if asserts or exceptions are not enabled.
Emits an `etl::deque_out_of_bounds` if the index is out of range of the deque. Undefined behaviour if asserts or exceptions are not enabled.
---
@ -102,6 +102,7 @@ const T& operator[](size_t i) const
```
**Description**
Returns a reference or const reference to the indexed element.
Emits an `etl::deque_out_of_bounds` if ETL_CHECK_INDEX_OPERATOR is defined and the index is out of range of the deque. Undefined behaviour if asserts or exceptions are not enabled.
---

View File

@ -4,19 +4,16 @@ title: "variant"
{{< callout type="info">}}
Header: `variant.h`
Similar to: `std::variant`
Similar to: `std::variant`
For C++11 and above.
{{< /callout >}}
**For C++11 and above.**
```cpp
template <typename... TTypes>
class variant
```
A variadic class that can contain one a several specified types in a type safe manner.
C++11 and C++14 support up to 32 types for visitor callback callbacks.
C++17 and above supports any number of visitor callback types.
Accepts functors, `etl::overload` and `etl::visitor` types as visitor callbacks.
@ -400,37 +397,42 @@ ETL_CONSTEXPR14 bool holds_alternative(size_t index, const etl::variant<TTypes..
Checks if the variant v holds the alternative index.
## Visitation
For `etl::visitor`
For C++11 and C++14 the maximum number of visitor types is 32.
Code size may be minimised if one of the following macros are defined.
`etl::variant` provides member functions that support three methods of visitation.
```cpp
ETL_VARIANT_CPP11_MAX_8_TYPES
ETL_VARIANT_CPP11_MAX_16_TYPES
ETL_VARIANT_CPP11_MAX_24_TYPES
```
**Description**
C++17 and above support any number of visitor callback types.
{{< callout type="info">}}
### Before: `20.50.0`
- C++11 and C++14:
Supports up to 32 types of functor, `etl::visitor`, or `etl::overload` callback types.
- C++17 and above:
Supports any number of functor or `etl::visitor`, or `etl::overload`callback types.
`etl::variant` provides member functions that support two methods of visitation.
### From: `20.50.0`
- Supports any number of visitor callback types.
- Compiles to smaller object code.
{{< /callout >}}
---
### etl::visitor
```cpp
void accept_visitor(etl::visitor<TTypes...>& v)
```
**Description**
Accepts an `etl::visitor` derived type.
{{< callout type="warning">}}
Deprecated from `20.36.0`
{{< /callout >}}
---
```cpp
void accept_visitor(etl::visitor<TTypes...>& v) const
```
**Description**
Accepts `an etl::visitor` derived type.
Deprecated
Since: `20.36.0`
{{< callout type="warning">}}
Deprecated from `20.36.0`
{{< /callout >}}
---
@ -438,7 +440,7 @@ Since: `20.36.0`
void accept(etl::visitor<TTypes...>& v)
```
**Description**
Accepts an `etl::visitor` derived type.
Accepts an `etl::visitor` derived type.
Since: `20.36.0`
---
@ -450,9 +452,9 @@ void accept(etl::visitor<TTypes...>& v) const
Accepts an `etl::visitor` derived type.
Since: `20.36.0`
See `visitor`
[See visitor]({{< relref "../../patterns/visitor.md" >}})
---
### Functors
```cpp
template <typename TVisitor>
@ -460,7 +462,9 @@ void accept_functor(TVisitor& v)
```
**Description**
Accepts a functor that overrides `operator()` for each type.
Deprecated since `20.36.0`
{{< callout type="warning">}}
Deprecated from `20.36.0`
{{< /callout >}}
---
@ -470,7 +474,9 @@ void accept_functor(TVisitor& v) const
```
**Description**
Accepts a functor that overrides `operator()` for each type.
Deprecated since `20.36.0`
{{< callout type="warning">}}
Deprecated from `20.36.0`
{{< /callout >}}
---
@ -479,7 +485,7 @@ template <typename TVisitor>
void accept(TVisitor& v)
```
**Description**
Accepts a functor that overrides `operator()` for each type.
Accepts a functor that overrides `operator()` for each type.
Since: `20.36.0`
---
@ -489,13 +495,14 @@ template <typename TVisitor>
void accept(TVisitor& v) const
```
**Description**
Accepts a functor that overrides `operator()` for each type.
Accepts a functor that overrides `operator()` for each type.
Since: `20.36.0`
See overload
## Visitation
For STL style `etl::visit`.
### etl::visit
For STL style `etl::visit`.
Since: `20.28.0`
The ETL implements an STL style visit function.

View File

@ -92,6 +92,7 @@ bool write(bool value)
**Description**
Write a boolean value to the stream.
Returns `true` if successful, otherwise `false`.
If a callback is set, it receives the one-byte boolean value after a successful write.
---

View File

@ -881,7 +881,6 @@ namespace etl
{
public:
ETL_STATIC_ASSERT((etl::is_trivially_copyable<T>::value), "atomic<T> requires that T is trivially copyable");
ETL_STATIC_ASSERT((etl::is_copy_constructible<T>::value), "atomic<T> requires that T is copy constructible");
ETL_STATIC_ASSERT((etl::is_copy_assignable<T>::value), "atomic<T> requires that T is copy assignable");
ETL_STATIC_ASSERT((etl::is_move_constructible<T>::value), "atomic<T> requires that T is move constructible");
@ -963,14 +962,15 @@ namespace etl
(void)order;
ETL_BUILTIN_LOCK;
if (memcmp(&value, &expected, sizeof(T)) == 0)
if (value == expected)
{
value = desired;
result = true;
}
else
{
result = false;
expected = value;
result = false;
}
ETL_BUILTIN_UNLOCK;
@ -2062,7 +2062,6 @@ namespace etl
{
public:
ETL_STATIC_ASSERT((etl::is_trivially_copyable<T>::value), "atomic<T> requires that T is trivially copyable");
ETL_STATIC_ASSERT((etl::is_copy_constructible<T>::value), "atomic<T> requires that T is copy constructible");
ETL_STATIC_ASSERT((etl::is_copy_assignable<T>::value), "atomic<T> requires that T is copy assignable");
ETL_STATIC_ASSERT((etl::is_move_constructible<T>::value), "atomic<T> requires that T is move constructible");
@ -2139,15 +2138,17 @@ namespace etl
{
bool result;
(void)order;
ETL_BUILTIN_LOCK;
if (memcmp(&value, &expected, sizeof(T)) == 0)
if (value == expected)
{
value = desired;
result = true;
}
else
{
result = false;
expected = value;
result = false;
}
ETL_BUILTIN_UNLOCK;

View File

@ -126,7 +126,8 @@ namespace etl
//***************************************************************************
void write_unchecked(bool value)
{
*pcurrent++ = value ? 1 : 0;
*pcurrent = value ? 1 : 0;
step(1U);
}
//***************************************************************************

View File

@ -83,6 +83,19 @@ namespace etl
}
};
//***************************************************************************
/// circular_buffer out of bounds exception.
//***************************************************************************
class circular_buffer_out_of_bounds : public etl::circular_buffer_exception
{
public:
circular_buffer_out_of_bounds(string_type file_name_, numeric_type line_number_)
: etl::circular_buffer_exception(ETL_ERROR_TEXT("circular_buffer:bounds", ETL_CIRCULAR_BUFFER_FILE_ID"C"), file_name_, line_number_)
{
}
};
//***************************************************************************
///
//***************************************************************************
@ -888,6 +901,8 @@ namespace etl
//*************************************************************************
reference operator[](size_t index)
{
ETL_ASSERT_CHECK_INDEX_OPERATOR(index < size(), ETL_ERROR(circular_buffer_out_of_bounds));
return pbuffer[(out + index) % buffer_size];
}
@ -897,6 +912,8 @@ namespace etl
//*************************************************************************
const_reference operator[](size_t index) const
{
ETL_ASSERT_CHECK_INDEX_OPERATOR(index < size(), ETL_ERROR(circular_buffer_out_of_bounds));
return pbuffer[(out + index) % buffer_size];
}

View File

@ -791,6 +791,8 @@ namespace etl
//*************************************************************************
reference operator[](size_t index)
{
ETL_ASSERT_CHECK_INDEX_OPERATOR(index < current_size, ETL_ERROR(deque_out_of_bounds));
iterator result(_begin);
result += static_cast<difference_type>(index);
@ -803,6 +805,8 @@ namespace etl
//*************************************************************************
const_reference operator[](size_t index) const
{
ETL_ASSERT_CHECK_INDEX_OPERATOR(index < current_size, ETL_ERROR(deque_out_of_bounds));
iterator result(_begin);
result += static_cast<difference_type>(index);

View File

@ -132,14 +132,7 @@ namespace etl
#endif
ETL_STATIC_ASSERT(!etl::is_void<T>::value, "etl::launder argument must not be a void type");
#if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT)
#if __has_builtin(__builtin_launder)
return __builtin_launder(p);
#else
return p;
#endif
#elif ETL_USING_GCC_COMPILER && (ETL_COMPILER_FULL_VERSION >= 70000)
// GCC 7, 8 and 9 provide __builtin_launder but not __has_builtin.
#if ETL_USING_BUILTIN_LAUNDER
return __builtin_launder(p);
#else
return p;
@ -400,12 +393,8 @@ namespace etl
template <size_t N, typename T>
ETL_NODISCARD ETL_CONSTEXPR T* assume_aligned(T* ptr) ETL_NOEXCEPT
{
#if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT)
#if __has_builtin(__builtin_assume_aligned)
#if ETL_USING_BUILTIN_ASSUME_ALIGNED
return static_cast<T*>(__builtin_assume_aligned(ptr, N));
#else
return ptr;
#endif
#else
return ptr;
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -403,11 +403,6 @@ namespace etl
template <typename T, typename... VTypes>
ETL_CONSTEXPR14 const T&& get(const etl::variant<VTypes...>&& v);
#if ETL_NOT_USING_CPP17
#include "variant_select_do_operator.h"
#include "variant_select_do_visitor.h"
#endif
constexpr bool operator>(etl::monostate, etl::monostate) ETL_NOEXCEPT
{
return false;
@ -439,7 +434,7 @@ namespace etl
}
#endif
#if ETL_NOT_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS)
#if ETL_NOT_USING_STL
template <>
struct is_copy_constructible<etl::monostate> : public etl::true_type
{
@ -1571,25 +1566,6 @@ namespace etl
{
(attempt_visitor<I>(visitor) || ...);
}
#else
//***************************************************************************
/// Call the relevant visitor.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_visitor(TVisitor& visitor)
{
etl::private_variant::select_do_visitor<NTypes>::do_visitor(*this, visitor);
}
//***************************************************************************
/// Call the relevant visitor.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_visitor(TVisitor& visitor) const
{
etl::private_variant::select_do_visitor<NTypes>::do_visitor(*this, visitor);
}
#endif
//***************************************************************************
/// Attempt to call a visitor.
@ -1633,6 +1609,81 @@ namespace etl
}
}
#else
//***************************************************************************
/// Call the relevant visitor.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_visitor(TVisitor& visitor)
{
do_visitor_at(visitor, etl::make_index_sequence<NTypes>{});
}
//***************************************************************************
/// Call the relevant visitor.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_visitor(TVisitor& visitor) const
{
do_visitor_at(visitor, etl::make_index_sequence<NTypes>{});
}
//***************************************************************************
/// Base case: exactly one index remains.
/// Check Index against this->index() to see if it's actually the match.
//***************************************************************************
template <typename TVisitor, size_t Index>
void do_visitor_at(TVisitor& visitor, etl::index_sequence<Index>)
{
if (Index == index())
{
visitor.visit(etl::get<Index>(*this));
}
}
template <typename TVisitor, size_t Index>
void do_visitor_at(TVisitor& visitor, etl::index_sequence<Index>) const
{
if (Index == index())
{
visitor.visit(etl::get<Index>(*this));
}
}
//***************************************************************************
/// Recursive case: check Index against this->index(), otherwise defer.
//***************************************************************************
template <typename TVisitor, size_t Index, size_t Index2, size_t... Rest>
void do_visitor_at(TVisitor& visitor, etl::index_sequence<Index, Index2, Rest...>)
{
if (Index == index())
{
visitor.visit(etl::get<Index>(*this));
}
else
{
do_visitor_at(visitor, etl::index_sequence<Index2, Rest...>{});
}
}
//***************************************************************************
/// Recursive case: check Index against this->index(), otherwise defer.
//***************************************************************************
template <typename TVisitor, size_t Index, size_t Index2, size_t... Rest>
void do_visitor_at(TVisitor& visitor, etl::index_sequence<Index, Index2, Rest...>) const
{
if (Index == index())
{
visitor.visit(etl::get<Index>(*this));
}
else
{
do_visitor_at(visitor, etl::index_sequence<Index2, Rest...>{});
}
}
#endif
#if ETL_USING_CPP17 && !defined(ETL_VARIANT_FORCE_CPP11)
//***************************************************************************
/// Call the relevant visitor by attempting each one.
@ -1651,53 +1702,6 @@ namespace etl
{
(attempt_operator<I>(visitor) || ...);
}
#else
//***************************************************************************
/// Call the relevant operator.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_operator(TVisitor& visitor)
{
#if defined(ETL_VARIANT_CPP11_MAX_8_TYPES)
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 8U, "ETL_VARIANT_CPP11_MAX_8_TYPES - Only a maximum of 8 types are allowed in this variant");
#endif
#if defined(ETL_VARIANT_CPP11_MAX_16_TYPES)
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 16U, "ETL_VARIANT_CPP11_MAX_16_TYPES - Only a maximum of 16 types are allowed in this variant");
#endif
#if defined(ETL_VARIANT_CPP11_MAX_24_TYPES)
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 24U, "ETL_VARIANT_CPP11_MAX_24_TYPES - Only a maximum of 24 types are allowed in this variant");
#endif
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 32U, "A maximum of 32 types are allowed in this variant");
etl::private_variant::select_do_operator<NTypes>::do_operator(*this, visitor);
}
//***************************************************************************
/// Call the relevant operator.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_operator(TVisitor& visitor) const
{
#if defined(ETL_VARIANT_CPP11_MAX_8_TYPES)
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 8U, "ETL_VARIANT_CPP11_MAX_8_TYPES - Only a maximum of 8 types are allowed in this variant");
#endif
#if defined(ETL_VARIANT_CPP11_MAX_16_TYPES)
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 16U, "ETL_VARIANT_CPP11_MAX_16_TYPES - Only a maximum of 16 types are allowed in this variant");
#endif
#if defined(ETL_VARIANT_CPP11_MAX_24_TYPES)
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 24U, "ETL_VARIANT_CPP11_MAX_24_TYPES - Only a maximum of 24 types are allowed in this variant");
#endif
ETL_STATIC_ASSERT(sizeof...(TTypes) <= 32U, "A maximum of 32 types are allowed in this variant");
etl::private_variant::select_do_operator<NTypes>::do_operator(*this, visitor);
}
#endif
//***************************************************************************
/// Attempt to call a visitor.
@ -1735,6 +1739,81 @@ namespace etl
}
}
#else
//***************************************************************************
/// Call the relevant visitor.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_operator(TVisitor& visitor)
{
do_operator_at(visitor, etl::make_index_sequence<NTypes>{});
}
//***************************************************************************
/// Call the relevant visitor.
//***************************************************************************
template <size_t NTypes, typename TVisitor>
void do_operator(TVisitor& visitor) const
{
do_operator_at(visitor, etl::make_index_sequence<NTypes>{});
}
//***************************************************************************
/// Base case: exactly one index remains.
/// Check Index against this->index() to see if it's actually the match.
//***************************************************************************
template <typename TVisitor, size_t Index>
void do_operator_at(TVisitor& visitor, etl::index_sequence<Index>)
{
if (Index == index())
{
visitor(etl::get<Index>(*this));
}
}
template <typename TVisitor, size_t Index>
void do_operator_at(TVisitor& visitor, etl::index_sequence<Index>) const
{
if (Index == index())
{
visitor(etl::get<Index>(*this));
}
}
//***************************************************************************
/// Recursive case: check Index against this->index(), otherwise defer.
//***************************************************************************
template <typename TVisitor, size_t Index, size_t Index2, size_t... Rest>
void do_operator_at(TVisitor& visitor, etl::index_sequence<Index, Index2, Rest...>)
{
if (Index == index())
{
visitor(etl::get<Index>(*this));
}
else
{
do_operator_at(visitor, etl::index_sequence<Index2, Rest...>{});
}
}
//***************************************************************************
/// Recursive case: check Index against this->index(), otherwise defer.
//***************************************************************************
template <typename TVisitor, size_t Index, size_t Index2, size_t... Rest>
void do_operator_at(TVisitor& visitor, etl::index_sequence<Index, Index2, Rest...>) const
{
if (Index == index())
{
visitor(etl::get<Index>(*this));
}
else
{
do_operator_at(visitor, etl::index_sequence<Index2, Rest...>{});
}
}
#endif
//***************************************************************************
/// Get a reference to the stored value by index.
/// For trivially destructible types, accesses the variadic_union directly.
@ -2091,8 +2170,8 @@ namespace etl
//***************************************************************************
namespace private_variant
{
template <typename TRet, typename TCallable, typename TVariant, size_t tIndex, typename TNext, typename... TVariants>
static ETL_CONSTEXPR14 TRet do_visit_single(TCallable&& f, TVariant&& v, TNext&&, TVariants&&... vs);
template <typename TReturn, typename TCallable, typename TVariant, size_t tIndex, typename TNext, typename... TVariants>
static ETL_CONSTEXPR14 TReturn do_visit_single(TCallable&& f, TVariant&& v, TNext&&, TVariants&&... vs);
//***************************************************************************
/// Dummy-struct used to indicate that the return type should be auto-deduced
@ -2143,8 +2222,8 @@ namespace etl
using type = common_type_t<TToInject<var_type<tAltIndices> >...>;
};
template <template <typename...> class TToInject, size_t... tAltIndices, typename TCur, typename TNext, typename... TVs>
struct visit_result_helper<TToInject, index_sequence<tAltIndices...>, TCur, TNext, TVs...>
template <template <typename...> class TToInject, size_t... tAltIndices, typename TCur, typename TNext, typename... TVarRest>
struct visit_result_helper<TToInject, index_sequence<tAltIndices...>, TCur, TNext, TVarRest...>
{
template <size_t tIndex>
using var_type = rlref_copy<TCur, variant_alternative_t<tIndex, remove_reference_t<TCur> > >;
@ -2155,7 +2234,7 @@ namespace etl
template <typename... TNextInj>
using next_inject = TToInject<var_type<tIndex>, TNextInj...>;
using recursive_result =
typename visit_result_helper<next_inject, make_index_sequence<variant_size<remove_reference_t<TNext> >::value>, TNext, TVs...>::type;
typename visit_result_helper<next_inject, make_index_sequence<variant_size<remove_reference_t<TNext> >::value>, TNext, TVarRest...>::type;
};
using type = common_type_t<typename next_inject_wrap<tAltIndices>::recursive_result...>;
@ -2166,10 +2245,10 @@ namespace etl
/// type from calls to function object with all possible permutations of variant
/// alternatives. Shortcuts to first argument unless it is 'visit_auto_return'.
//***************************************************************************
template <typename TRet, typename...>
template <typename TReturn, typename...>
struct visit_result
{
using type = TRet;
using type = TReturn;
};
template <typename TCallable, typename T1, typename... Ts>
@ -2188,58 +2267,71 @@ namespace etl
/// Makes a call to TCallable using tIndex alternative to the variant.
/// Instantiated as function pointer in the `do_visit` function.
//***************************************************************************
template <typename TRet, typename TCallable, typename TVariant, size_t tIndex>
constexpr TRet do_visit_single(TCallable&& f, TVariant&& v)
template <typename TReturn, typename TCallable, typename TVariant, size_t tIndex>
constexpr TReturn do_visit_single(TCallable&& f, TVariant&& v)
{
return static_cast<TCallable&&>(f)(etl::get<tIndex>(static_cast<TVariant&&>(v)));
}
//***************************************************************************
/// Helper to instantiate the function pointers needed for the "jump table".
/// Embeds the 'TVarRest' (remaining variants) into its type to come around
/// the "double expansion" otherwise needed in "do_visit".
/// Recursive dispatch: compares the runtime index against each candidate in
/// turn and calls do_visit_single directly - no function-pointer table.
/// Base case: exactly one index remains, so it's assumed to be the match
/// (the ETL_ASSERT in do_visit guarantees v.index() is valid).
//***************************************************************************
template <typename TRet, typename TCallable, typename TCurVariant, typename... TVarRest>
struct do_visit_helper
template <typename TReturn, typename TCallable, typename TVariant, size_t tIndex, typename... TVarRest>
static ETL_CONSTEXPR14 TReturn do_visit_at(TCallable&& f, TVariant&& v, index_sequence<tIndex>, TVarRest&&... variants)
{
using function_pointer = add_pointer_t<TRet(TCallable&&, TCurVariant&&, TVarRest&&...)>;
return do_visit_single<TReturn, TCallable, TVariant, tIndex, TVarRest...>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v),
static_cast<TVarRest&&>(variants)...);
}
template <size_t tIndex>
static constexpr function_pointer fptr() ETL_NOEXCEPT
//***************************************************************************
/// Recursive case: check tIndex against v.index(), otherwise defer to the
/// rest of the sequence.
//***************************************************************************
template <typename TReturn, typename TCallable, typename TVariant, size_t tIndex, size_t tIndex2, size_t... tRest, typename... TVarRest>
static ETL_CONSTEXPR14 TReturn do_visit_at(TCallable&& f, TVariant&& v, index_sequence<tIndex, tIndex2, tRest...>, TVarRest&&... variants)
{
if (v.index() == tIndex)
{
return &do_visit_single<TRet, TCallable, TCurVariant, tIndex, TVarRest...>;
return do_visit_single<TReturn, TCallable, TVariant, tIndex, TVarRest...>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v),
static_cast<TVarRest&&>(variants)...);
}
};
else
{
return do_visit_at<TReturn, TCallable, TVariant>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v), index_sequence<tIndex2, tRest...>{},
static_cast<TVarRest&&>(variants)...);
}
}
//***************************************************************************
/// Dispatch current variant into recursive calls to dispatch the rest.
//***************************************************************************
template <typename TRet, typename TCallable, typename TVariant, size_t... tIndices, typename... TVarRest>
static ETL_CONSTEXPR14 TRet do_visit(TCallable&& f, TVariant&& v, index_sequence<tIndices...>, TVarRest&&... variants)
template <typename TReturn, typename TCallable, typename TVariant, size_t... tIndices, typename... TVarRest>
static ETL_CONSTEXPR14 TReturn do_visit(TCallable&& f, TVariant&& v, index_sequence<tIndices...> seq, TVarRest&&... variants)
{
ETL_ASSERT(!v.valueless_by_exception(), ETL_ERROR(bad_variant_access));
using helper_t = do_visit_helper<TRet, TCallable, TVariant, TVarRest...>;
using func_ptr = typename helper_t::function_pointer;
constexpr func_ptr jmp_table[]{helper_t::template fptr<tIndices>()...};
return jmp_table[v.index()](static_cast<TCallable&&>(f), static_cast<TVariant&&>(v), static_cast<TVarRest&&>(variants)...);
return do_visit_at<TReturn, TCallable, TVariant>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v), seq,
static_cast<TVarRest&&>(variants)...);
}
template <typename TRet, typename TCallable, typename TVariant, typename... TVs>
static ETL_CONSTEXPR14 TRet visit(TCallable&& f, TVariant&& v, TVs&&... vs)
//***************************************************************************
///
//***************************************************************************
template <typename TReturn, typename TCallable, typename TVariant, typename... TVs>
static ETL_CONSTEXPR14 TReturn visit(TCallable&& f, TVariant&& v, TVs&&... vs)
{
constexpr size_t variants = etl::variant_size<typename remove_reference<TVariant>::type>::value;
return private_variant::do_visit<TRet>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v), make_index_sequence<variants>{},
static_cast<TVs&&>(vs)...);
return do_visit<TReturn>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v), make_index_sequence<variants>{}, static_cast<TVs&&>(vs)...);
}
//***************************************************************************
/// Allows constexpr operation in c++14, otherwise acts like a lambda to
/// bind a variant "get" to an argument for "TCallable".
//***************************************************************************
template <typename TRet, typename TCallable, typename TVariant, size_t tIndex>
template <typename TReturn, typename TCallable, typename TVariant, size_t tIndex>
class constexpr_visit_closure
{
add_pointer_t<TCallable> callable_;
@ -2254,17 +2346,17 @@ namespace etl
}
template <typename... Ts>
ETL_CONSTEXPR14 TRet operator()(Ts&&... args) const
ETL_CONSTEXPR14 TReturn operator()(Ts&&... args) const
{
return static_cast<TCallable&&>(*callable_)(get<tIndex>(static_cast<TVariant&&>(*variant_)), static_cast<Ts&&>(args)...);
}
};
template <typename TRet, typename TCallable, typename TVariant, size_t tIndex, typename TNext, typename... TVariants>
static ETL_CONSTEXPR14 TRet do_visit_single(TCallable&& f, TVariant&& v, TNext&& next, TVariants&&... vs)
template <typename TReturn, typename TCallable, typename TVariant, size_t tIndex, typename TNext, typename... TVariants>
static ETL_CONSTEXPR14 TReturn do_visit_single(TCallable&& f, TVariant&& v, TNext&& next, TVariants&&... vs)
{
return private_variant::visit<TRet>(
constexpr_visit_closure<TRet, TCallable, TVariant, tIndex>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v)),
return private_variant::visit<TReturn>(
constexpr_visit_closure<TReturn, TCallable, TVariant, tIndex>(static_cast<TCallable&&>(f), static_cast<TVariant&&>(v)),
static_cast<TNext&&>(next), static_cast<TVariants&&>(vs)...);
}
@ -2274,8 +2366,8 @@ namespace etl
/// C++11/14 compatible etl::visit for etl::variant. Supports both c++17
/// "auto return type" signature and c++20 explicit template return type.
//***************************************************************************
template <typename TRet = private_variant::visit_auto_return, typename... TVariants, typename TCallable,
typename TDeducedReturn = private_variant::visit_result_t<TRet, TCallable, TVariants...> >
template <typename TReturn = private_variant::visit_auto_return, typename... TVariants, typename TCallable,
typename TDeducedReturn = private_variant::visit_result_t<TReturn, TCallable, TVariants...> >
static ETL_CONSTEXPR14 TDeducedReturn visit(TCallable&& f, TVariants&&... vs)
{
return private_variant::visit<TDeducedReturn>(static_cast<TCallable&&>(f), static_cast<TVariants&&>(vs)...);

View File

@ -31,143 +31,24 @@ SOFTWARE.
#ifndef ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
#define ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
#if defined(ETL_USE_TYPE_TRAITS_BUILTINS) // Set all of them to be true if not
// already defined
#if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
#define ETL_USING_BUILTIN_IS_ASSIGNABLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
#define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE)
#define ETL_USING_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_NOTHROW_ASSIGNABLE)
#define ETL_USING_BUILTIN_IS_NOTHROW_ASSIGNABLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
#define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 1
#endif
#if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR)
#define ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE)
#define ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
#define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 1
#endif
#if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR)
#define ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_DESTRUCTIBLE)
#define ETL_USING_BUILTIN_IS_DESTRUCTIBLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE)
#define ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
#define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_STANDARD_LAYOUT)
#define ETL_USING_BUILTIN_IS_STANDARD_LAYOUT 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_TRIVIAL)
#define ETL_USING_BUILTIN_IS_TRIVIAL 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE)
#define ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF)
#define ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_UNION)
#define ETL_USING_BUILTIN_IS_UNION 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_EMPTY)
#define ETL_USING_BUILTIN_IS_EMPTY 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_POLYMORPHIC)
#define ETL_USING_BUILTIN_IS_POLYMORPHIC 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_ABSTRACT)
#define ETL_USING_BUILTIN_IS_ABSTRACT 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_FINAL)
#define ETL_USING_BUILTIN_IS_FINAL 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_AGGREGATE)
#define ETL_USING_BUILTIN_IS_AGGREGATE 1
#endif
#if !defined(ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR)
#define ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR 1
#endif
#if !defined(ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS)
#define ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS 1
#endif
#if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
#define ETL_USING_BUILTIN_UNDERLYING_TYPE 1
#endif
#if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)
#define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED 1
#endif
#if !defined(ETL_USING_BUILTIN_BIT_CAST)
#define ETL_USING_BUILTIN_BIT_CAST 1
#if ETL_USING_GCC_COMPILER && (ETL_COMPILER_FULL_VERSION >= 70000 && ETL_COMPILER_FULL_VERSION < 100000) && !defined(ETL_COMPILER_MICROSOFT)
// GCC 7, 8 and 9 provide __builtin_launder but not __has_builtin.
#if !defined(ETL_USING_BUILTIN_LAUNDER)
#define ETL_USING_BUILTIN_LAUNDER 1
#endif
#endif
#if defined(ETL_USE_BUILTIN_MEM_FUNCTIONS) // Set all of them to be true if not
// already defined
#if !defined(ETL_USING_BUILTIN_MEMCPY)
#define ETL_USING_BUILTIN_MEMCPY 1
#endif
#if !defined(ETL_USING_BUILTIN_MEMMOVE)
#define ETL_USING_BUILTIN_MEMMOVE 1
#endif
#if !defined(ETL_USING_BUILTIN_MEMSET)
#define ETL_USING_BUILTIN_MEMSET 1
#endif
#if !defined(ETL_USING_BUILTIN_MEMCMP)
#define ETL_USING_BUILTIN_MEMCMP 1
#endif
#if !defined(ETL_USING_BUILTIN_MEMCHR)
#define ETL_USING_BUILTIN_MEMCHR 1
#if (ETL_USING_GCC_COMPILER || ETL_USING_CLANG_COMPILER) && !defined(ETL_COMPILER_MICROSOFT)
// __builtin_constant_p predates __has_builtin on GCC and Clang, so enable it for
// those compilers when __has_builtin was not available to detect it.
#if !defined(ETL_USING_BUILTIN_CONSTANT_P)
#define ETL_USING_BUILTIN_CONSTANT_P 1
#endif
#endif
#if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT) // Use __has_builtin to check for
// existence of builtin functions?
// Fix VS2022 intellisense issue.
#if defined(__has_builtin) && !defined(ETL_DISABLE_BUILTIN_FUNCTIONS) && !defined(ETL_COMPILER_MICROSOFT) // Use __has_builtin to check for
// existence of builtin functions?
// Fix VS2022 intellisense issue.
#if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
#define ETL_USING_BUILTIN_IS_ASSIGNABLE __has_builtin(__is_assignable)
#endif
@ -319,6 +200,15 @@ SOFTWARE.
#if !defined(ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE)
#define ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE __has_builtin(__builtin_is_cpp_trivially_relocatable)
#endif
#if !defined(ETL_USING_BUILTIN_LAUNDER)
#define ETL_USING_BUILTIN_LAUNDER __has_builtin(__builtin_launder)
#endif
#if !defined(ETL_USING_BUILTIN_ASSUME_ALIGNED)
#define ETL_USING_BUILTIN_ASSUME_ALIGNED __has_builtin(__builtin_assume_aligned)
#endif
#endif
#if defined(ETL_COMPILER_MICROSOFT) // The Microsoft compiler supports the __is_trivially_copyable
@ -531,11 +421,27 @@ SOFTWARE.
#define ETL_USING_BUILTIN_BIT_CAST 0
#endif
#if !defined(ETL_USING_BUILTIN_LAUNDER)
#define ETL_USING_BUILTIN_LAUNDER 0
#endif
#if !defined(ETL_USING_BUILTIN_ASSUME_ALIGNED)
#define ETL_USING_BUILTIN_ASSUME_ALIGNED 0
#endif
#if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR)
#define ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR 0
#endif
#if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR)
#define ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR 0
#endif
namespace etl
{
namespace traits
{
// Documentation: https://www.etlcpp.com/etl_traits.html
// Documentation: https://www.etlcpp.com/docs/utilities/etl-traits/
static ETL_CONSTANT bool using_builtin_is_assignable = (ETL_USING_BUILTIN_IS_ASSIGNABLE == 1);
static ETL_CONSTANT bool using_builtin_is_constructible = (ETL_USING_BUILTIN_IS_CONSTRUCTIBLE == 1);
@ -545,18 +451,36 @@ namespace etl
static ETL_CONSTANT bool using_builtin_is_trivially_assignable = (ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE == 1);
static ETL_CONSTANT bool using_builtin_is_trivially_destructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE == 1);
static ETL_CONSTANT bool using_builtin_is_trivially_copyable = (ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE == 1);
static ETL_CONSTANT bool using_builtin_underlying_type = (ETL_USING_BUILTIN_UNDERLYING_TYPE == 1);
static ETL_CONSTANT bool using_builtin_is_destructible = (ETL_USING_BUILTIN_IS_DESTRUCTIBLE == 1);
static ETL_CONSTANT bool using_builtin_is_nothrow_destructible = (ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE == 1);
static ETL_CONSTANT bool using_builtin_is_standard_layout = (ETL_USING_BUILTIN_IS_STANDARD_LAYOUT == 1);
static ETL_CONSTANT bool using_builtin_is_trivial = (ETL_USING_BUILTIN_IS_TRIVIAL == 1);
static ETL_CONSTANT bool using_builtin_is_layout_compatible = (ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE == 1);
static ETL_CONSTANT bool using_builtin_is_pointer_interconvertible_base_of = (ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF == 1);
static ETL_CONSTANT bool using_builtin_is_union = (ETL_USING_BUILTIN_IS_UNION == 1);
static ETL_CONSTANT bool using_builtin_is_empty = (ETL_USING_BUILTIN_IS_EMPTY == 1);
static ETL_CONSTANT bool using_builtin_is_polymorphic = (ETL_USING_BUILTIN_IS_POLYMORPHIC == 1);
static ETL_CONSTANT bool using_builtin_is_abstract = (ETL_USING_BUILTIN_IS_ABSTRACT == 1);
static ETL_CONSTANT bool using_builtin_is_final = (ETL_USING_BUILTIN_IS_FINAL == 1);
static ETL_CONSTANT bool using_builtin_is_aggregate = (ETL_USING_BUILTIN_IS_AGGREGATE == 1);
static ETL_CONSTANT bool using_builtin_is_constant_evaluated = (ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1);
static ETL_CONSTANT bool using_builtin_is_virtual_base_of = (ETL_USING_BUILTIN_IS_VIRTUAL_BASE_OF == 1);
static ETL_CONSTANT bool using_builtin_is_trivially_relocatable = (ETL_USING_BUILTIN_IS_TRIVIALLY_RELOCATABLE == 1);
static ETL_CONSTANT bool using_builtin_has_unique_object_representations = (ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS == 1);
static ETL_CONSTANT bool using_builtin_has_trivial_constructor = (ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR == 1);
static ETL_CONSTANT bool using_builtin_has_trivial_destructor = (ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR == 1);
static ETL_CONSTANT bool using_builtin_has_virtual_destructor = (ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR == 1);
static ETL_CONSTANT bool using_builtin_underlying_type = (ETL_USING_BUILTIN_UNDERLYING_TYPE == 1);
static ETL_CONSTANT bool using_builtin_constant_p = (ETL_USING_BUILTIN_CONSTANT_P == 1);
static ETL_CONSTANT bool using_builtin_memcpy = (ETL_USING_BUILTIN_MEMCPY == 1);
static ETL_CONSTANT bool using_builtin_memmove = (ETL_USING_BUILTIN_MEMMOVE == 1);
static ETL_CONSTANT bool using_builtin_memset = (ETL_USING_BUILTIN_MEMSET == 1);
static ETL_CONSTANT bool using_builtin_memcmp = (ETL_USING_BUILTIN_MEMCMP == 1);
static ETL_CONSTANT bool using_builtin_memchr = (ETL_USING_BUILTIN_MEMCHR == 1);
static ETL_CONSTANT bool using_builtin_is_virtual_base_of = (ETL_USING_BUILTIN_IS_VIRTUAL_BASE_OF == 1);
static ETL_CONSTANT bool using_builtin_is_trivially_relocatable = (ETL_USING_BUILTIN_IS_TRIVIALLY_RELOCATABLE == 1);
static ETL_CONSTANT bool using_builtin_builtin_is_cpp_trivially_relocatable = (ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE == 1);
static ETL_CONSTANT bool using_builtin_bit_cast = (ETL_USING_BUILTIN_BIT_CAST == 1);
static ETL_CONSTANT bool using_builtin_launder = (ETL_USING_BUILTIN_LAUNDER == 1);
static ETL_CONSTANT bool using_builtin_assume_aligned = (ETL_USING_BUILTIN_ASSUME_ALIGNED == 1);
} // namespace traits
} // namespace etl

View File

@ -3318,7 +3318,7 @@ namespace etl
#endif
//***************************************************************************
#if ETL_USING_STL && ETL_USING_CPP11 && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \
#if ETL_USING_STL && ETL_USING_CPP11 && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \
&& ((!defined(ARDUINO) && ETL_NOT_USING_STLPORT) || defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED))
//*********************************************
@ -4946,7 +4946,7 @@ namespace etl
{
return false;
}
#elif ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1
#elif ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED
// Fallback for C++20 on supported compilers
return __builtin_is_constant_evaluated();
#else

View File

@ -443,16 +443,16 @@ else()
message(STATUS "Compiling for STL")
endif()
if (ETL_USE_TYPE_TRAITS_BUILTINS)
message(STATUS "Compiling for built-in type traits")
target_compile_definitions(etl_tests PRIVATE -DETL_USE_TYPE_TRAITS_BUILTINS)
endif()
if (ETL_USER_DEFINED_TYPE_TRAITS)
message(STATUS "Compiling for user defined type traits")
target_compile_definitions(etl_tests PRIVATE -DETL_USER_DEFINED_TYPE_TRAITS)
endif()
if (ETL_DISABLE_BUILTIN_FUNCTIONS)
message(STATUS "Compiling with builtin functions disabled")
target_compile_definitions(etl_tests PRIVATE -DETL_DISABLE_BUILTIN_FUNCTIONS)
endif()
if (ETL_MESSAGES_ARE_NOT_VIRTUAL)
message(STATUS "Compiling for non-virtual messages")
target_compile_definitions(etl_tests PRIVATE -DETL_MESSAGES_ARE_NOT_VIRTUAL)

View File

@ -53,14 +53,13 @@ for CXXSTD in 11 14 17 20 23 26; do
-DCMAKE_C_COMPILER=$C_COMPILER \
-DCMAKE_CXX_COMPILER=$CXX_COMPILER \
-DNO_STL=$NOSTL \
-DETL_USE_TYPE_TRAITS_BUILTINS=OFF \
\
-DETL_USER_DEFINED_TYPE_TRAITS=OFF \
-DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
-DETL_OPTIMISATION=-O0 \
-DETL_CXX_STANDARD=$CXXSTD \
-DETL_ENABLE_SANITIZER=OFF \
-DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF \
-DETL_USE_BUILTIN_MEM_FUNCTIONS=ON ..
-DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF ..
cmake --build .
./etl_tests
lcov --gcov-tool "$GCOV" $GCOV_ADD --capture --directory CMakeFiles/etl_tests.dir \

View File

@ -147,8 +147,8 @@ RunCheck()
local cc_name=$1
local msg=$2
local no_stl=$3
local user_defined=$4
local force_03=$5
local force_03=$4
local disable_builtins=$5
local build_dir=$6
if [ "$compiler_enabled" != "$cc_name" ] && [ "$compiler_enabled" != "All compilers" ]; then
@ -170,7 +170,7 @@ RunCheck()
rm -rdf bgcc
rm -rdf bclang
cmake -E make_directory bgcc bclang
CC=$cc CXX=$cxx cmake -E chdir $build_dir cmake -DNO_STL=$no_stl -DETL_USER_DEFINED_TYPE_TRAITS=$user_defined -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=$force_03 -DETL_CXX_STANDARD=$cxx_standard ..
CC=$cc CXX=$cxx cmake -E chdir $build_dir cmake -DNO_STL=$no_stl -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=$force_03 -DETL_DISABLE_BUILTIN_FUNCTIONS=$disable_builtins -DETL_CXX_STANDARD=$cxx_standard ..
cmake --build $build_dir
if [ $? -eq 0 ]; then
PassedCompilation
@ -195,19 +195,24 @@ RunStandard()
RunCheck gcc "STL" OFF OFF OFF bgcc
RunCheck gcc "No STL" ON OFF OFF bgcc
RunCheck gcc "STL - Disable builtins" OFF ON ON bgcc
RunCheck gcc "No STL - Disable builtins" ON ON ON bgcc
if [ "$has_force_03" = "1" ]; then
RunCheck gcc "STL - Force C++03" OFF OFF ON bgcc
RunCheck gcc "No STL - Force C++03" ON OFF ON bgcc
RunCheck gcc "STL - Force C++03" OFF ON OFF bgcc
RunCheck gcc "No STL - Force C++03" ON ON OFF bgcc
fi
# Clang configurations
RunCheck clang "STL" OFF OFF OFF bclang
RunCheck clang "No STL" ON OFF OFF bclang
RunCheck clang "STL" OFF OFF OFF bclang
RunCheck clang "No STL" ON OFF OFF bclang
RunCheck clang "STL - Disable builtins" OFF ON ON bclang
RunCheck clang "No STL - Disable builtins" ON ON ON bclang
if [ "$has_force_03" = "1" ]; then
RunCheck clang "STL - Force C++03" OFF OFF ON bclang
RunCheck clang "No STL - Force C++03" ON OFF ON bclang
fi
RunCheck clang "STL - Force C++03" OFF ON OFF bclang
RunCheck clang "No STL - Force C++03" ON ON OFF bclang
}
###############################################################################

View File

@ -17,7 +17,7 @@ TitleColour='\033[38;2;107;210;255m'
HelpColour='\033[38;2;250;180;250m'
NoColour='\033[0m'
ParseGitBranch()
ParseGitBranch()
{
git rev-parse --abbrev-ref HEAD
}
@ -145,7 +145,7 @@ elif [ "$2" = "1" ]; then
elif [ "$2" = "2" ]; then
opt="-O2"
elif [ "$2" = "3" ]; then
opt="-O3"
opt="-O3"
else
opt="-O0"
fi
@ -240,17 +240,17 @@ for cxx_standard in $cxx_standards ; do
cd $OLD_DIR
fi
done <<-EOF
gcc ,STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,STL - Non-virtual messages,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=ON $verbose_cmake_flag ..
gcc ,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,No STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag ..
clang,STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,No STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag ..
gcc ,STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,STL - Non-virtual messages,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=ON $verbose_cmake_flag ..
gcc ,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,No STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
gcc ,No STL - Disable builtins ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_DISABLE_BUILTIN_FUNCTIONS=ON $verbose_cmake_flag ..
clang,STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,No STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag ..
clang,No STL - Disable builtins ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_DISABLE_BUILTIN_FUNCTIONS=ON $verbose_cmake_flag ..
gcc ,Initializer list test ,etl_initializer_list,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag ..
clang,Initializer list test ,etl_initializer_list,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag ..
gcc ,Error macros 'log_errors' test,etl_error_handler/log_errors ,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag ..

View File

@ -12,16 +12,16 @@ else()
message(STATUS "Compiling for STL")
endif()
if (ETL_USE_TYPE_TRAITS_BUILTINS)
message(STATUS "Compiling for built-in type traits")
add_definitions(-DETL_USE_TYPE_TRAITS_BUILTINS)
endif()
if (ETL_USER_DEFINED_TYPE_TRAITS)
message(STATUS "Compiling for user defined type traits")
add_definitions(-DETL_USER_DEFINED_TYPE_TRAITS)
endif()
if (ETL_DISABLE_BUILTIN_FUNCTIONS)
message(STATUS "Compiling with builtin functions disabled")
add_definitions(-DETL_DISABLE_BUILTIN_FUNCTIONS)
endif()
if (ETL_FORCE_TEST_CPP03_IMPLEMENTATION)
message(STATUS "Force C++03 implementations")
add_definitions(-DETL_FORCE_TEST_CPP03_IMPLEMENTATION)

View File

@ -1374,6 +1374,61 @@ namespace
}
}
//*************************************************************************
TEST(write_bool_callback)
{
std::array<char, 3> storage = {};
std::vector<char> received;
std::vector<size_t> lengths;
std::vector<char*> positions;
auto lambda = [&](etl::byte_stream_writer::callback_parameter_type sp)
{
received.insert(received.end(), sp.begin(), sp.end());
lengths.push_back(sp.size());
positions.push_back(sp.data());
};
etl::byte_stream_writer::callback_type callback(lambda);
etl::byte_stream_writer writer(storage.data(), storage.size(), etl::endian::big, callback);
CHECK_TRUE(writer.write(char(7)));
CHECK_TRUE(writer.write(true));
CHECK_TRUE(writer.write(false));
CHECK_TRUE(writer.full());
CHECK_EQUAL(size_t(3), writer.size_bytes());
CHECK_EQUAL(size_t(3), received.size());
CHECK(received == std::vector<char>({char(7), char(1), char(0)}));
CHECK(lengths == std::vector<size_t>({1U, 1U, 1U}));
CHECK(positions == std::vector<char*>({storage.data(), storage.data() + 1, storage.data() + 2}));
CHECK_ARRAY_EQUAL(storage.data(), received.data(), received.size());
CHECK_FALSE(writer.write(true));
CHECK_EQUAL(size_t(3), received.size());
CHECK_EQUAL(size_t(3), writer.size_bytes());
}
//*************************************************************************
TEST(write_bool_unchecked_callback)
{
std::array<char, 2> storage = {};
std::vector<char> received;
auto lambda = [&](etl::byte_stream_writer::callback_parameter_type sp)
{
CHECK_EQUAL(size_t(1), sp.size());
received.insert(received.end(), sp.begin(), sp.end());
};
etl::byte_stream_writer::callback_type callback(lambda);
etl::byte_stream_writer writer(storage.data(), storage.size(), etl::endian::little);
writer.set_callback(callback);
writer.write_unchecked(false);
etl::write_unchecked(writer, true);
CHECK_TRUE(writer.full());
CHECK_EQUAL(size_t(2), writer.size_bytes());
CHECK(received == std::vector<char>({char(0), char(1)}));
CHECK_EQUAL(char(0), storage[0]);
CHECK_EQUAL(char(1), storage[1]);
}
//*************************************************************************
TEST(write_byte_stream_callback)
{

View File

@ -647,6 +647,8 @@ namespace
{
CHECK_EQUAL(input2[i], data[i]);
}
CHECK_THROW(data[data.size()], etl::circular_buffer_out_of_bounds);
}
//*************************************************************************
@ -662,6 +664,8 @@ namespace
{
CHECK_EQUAL(input[i + 3], data[i]);
}
CHECK_THROW(data[data.size()], etl::circular_buffer_out_of_bounds);
}
//*************************************************************************

View File

@ -394,6 +394,14 @@ namespace
CHECK_EQUAL(compare_data.at(5), data.at(5));
}
//*************************************************************************
TEST(test_at_out_of_bounds)
{
DataNDC data(initial_data.begin(), initial_data.end());
CHECK_THROW(data.at(data.size()), etl::deque_out_of_bounds);
}
//*************************************************************************
TEST(test_at_const)
{
@ -408,6 +416,14 @@ namespace
CHECK_EQUAL(compare_data.at(5), data.at(5));
}
//*************************************************************************
TEST(test_at_const_out_of_bounds)
{
const DataNDC data(initial_data.begin(), initial_data.end());
CHECK_THROW(data.at(data.size()), etl::deque_out_of_bounds);
}
//*************************************************************************
TEST(test_index_operator)
{
@ -422,6 +438,14 @@ namespace
CHECK_EQUAL(compare_data[5], data[5]);
}
//*************************************************************************
TEST(test_index_operator_out_of_bounds)
{
DataNDC data(initial_data.begin(), initial_data.end());
CHECK_THROW(data[data.size()], etl::deque_out_of_bounds);
}
//*************************************************************************
TEST(test_index_operator_const)
{
@ -436,6 +460,14 @@ namespace
CHECK_EQUAL(compare_data[5], data[5]);
}
//*************************************************************************
TEST(test_index_operator_const_out_of_bounds)
{
const DataNDC data(initial_data.begin(), initial_data.end());
CHECK_THROW(data[data.size()], etl::deque_out_of_bounds);
}
//*************************************************************************
TEST(test_front)
{

View File

@ -66,6 +66,44 @@ namespace
CHECK_EQUAL((ETL_USING_8BIT_TYPES == 1), etl::traits::has_8bit_types);
CHECK_EQUAL((ETL_USING_64BIT_TYPES == 1), etl::traits::has_64bit_types);
// Using builtins...
CHECK_EQUAL((ETL_USING_BUILTIN_IS_ASSIGNABLE == 1), etl::traits::using_builtin_is_assignable);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_CONSTRUCTIBLE == 1), etl::traits::using_builtin_is_constructible);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE == 1), etl::traits::using_builtin_is_nothrow_constructible);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_NOTHROW_ASSIGNABLE == 1), etl::traits::using_builtin_is_nothrow_assignable);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE == 1), etl::traits::using_builtin_is_trivially_constructible);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE == 1), etl::traits::using_builtin_is_trivially_assignable);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE == 1), etl::traits::using_builtin_is_trivially_destructible);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE == 1), etl::traits::using_builtin_is_trivially_copyable);
CHECK_EQUAL((ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR == 1), etl::traits::using_builtin_has_trivial_constructor);
CHECK_EQUAL((ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR == 1), etl::traits::using_builtin_has_trivial_destructor);
CHECK_EQUAL((ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR == 1), etl::traits::using_builtin_has_virtual_destructor);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_DESTRUCTIBLE == 1), etl::traits::using_builtin_is_destructible);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE == 1), etl::traits::using_builtin_is_nothrow_destructible);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_STANDARD_LAYOUT == 1), etl::traits::using_builtin_is_standard_layout);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIAL == 1), etl::traits::using_builtin_is_trivial);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE == 1), etl::traits::using_builtin_is_layout_compatible);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF == 1), etl::traits::using_builtin_is_pointer_interconvertible_base_of);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_UNION == 1), etl::traits::using_builtin_is_union);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_EMPTY == 1), etl::traits::using_builtin_is_empty);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_POLYMORPHIC == 1), etl::traits::using_builtin_is_polymorphic);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_ABSTRACT == 1), etl::traits::using_builtin_is_abstract);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_FINAL == 1), etl::traits::using_builtin_is_final);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_AGGREGATE == 1), etl::traits::using_builtin_is_aggregate);
CHECK_EQUAL((ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS == 1), etl::traits::using_builtin_has_unique_object_representations);
CHECK_EQUAL((ETL_USING_BUILTIN_UNDERLYING_TYPE == 1), etl::traits::using_builtin_underlying_type);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1), etl::traits::using_builtin_is_constant_evaluated);
CHECK_EQUAL((ETL_USING_BUILTIN_CONSTANT_P == 1), etl::traits::using_builtin_constant_p);
CHECK_EQUAL((ETL_USING_BUILTIN_MEMCPY == 1), etl::traits::using_builtin_memcpy);
CHECK_EQUAL((ETL_USING_BUILTIN_MEMMOVE == 1), etl::traits::using_builtin_memmove);
CHECK_EQUAL((ETL_USING_BUILTIN_MEMSET == 1), etl::traits::using_builtin_memset);
CHECK_EQUAL((ETL_USING_BUILTIN_MEMCMP == 1), etl::traits::using_builtin_memcmp);
CHECK_EQUAL((ETL_USING_BUILTIN_MEMCHR == 1), etl::traits::using_builtin_memchr);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_VIRTUAL_BASE_OF == 1), etl::traits::using_builtin_is_virtual_base_of);
CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_RELOCATABLE == 1), etl::traits::using_builtin_is_trivially_relocatable);
CHECK_EQUAL((ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE == 1), etl::traits::using_builtin_builtin_is_cpp_trivially_relocatable);
CHECK_EQUAL((ETL_USING_BUILTIN_BIT_CAST == 1), etl::traits::using_builtin_bit_cast);
// Has...
CHECK_EQUAL((ETL_HAS_ATOMIC == 1), etl::traits::has_atomic);
CHECK_EQUAL((ETL_HAS_MUTEX == 1), etl::traits::has_mutex);

View File

@ -1943,6 +1943,7 @@ namespace
}
//*************************************************************************
#if (ETL_USING_STL && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED) || ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE
TEST(test_start_lifetime_as)
{
struct quad_t
@ -1968,6 +1969,7 @@ namespace
CHECK_EQUAL(1, cp->a);
CHECK_EQUAL(4, cp->d);
}
#endif
//*************************************************************************
TEST(test_start_lifetime_as_array)

View File

@ -1393,7 +1393,7 @@ namespace
// because ETL_NOEXCEPT_IF expands to nothing otherwise.
// The etl::is_nothrow_* traits only work with STL or builtins.
//*************************************************************************
#if ETL_USING_CPP11 && ETL_USING_EXCEPTIONS && (defined(ETL_USE_TYPE_TRAITS_BUILTINS) || (ETL_USING_STL && !defined(ETL_USER_DEFINED_TYPE_TRAITS)))
#if ETL_USING_CPP11 && ETL_USING_EXCEPTIONS && ETL_USING_STL
struct NothrowAtAll
{
NothrowAtAll() noexcept {}

View File

@ -355,8 +355,8 @@ namespace
#endif
} // namespace
// Definitions for when the STL and compiler built-ins are not available.
#if ETL_NOT_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS)
// Definitions for when the STL is not available.
#if ETL_NOT_USING_STL
using etl::is_assignable;
using etl::is_constructible;
@ -792,6 +792,7 @@ namespace
}
//*************************************************************************
#if ETL_USING_CPP17 && ETL_USING_STL || ETL_USING_BUILTIN_IS_STANDARD_LAYOUT
TEST(test_is_standard_layout)
{
struct StandardLayout
@ -813,13 +814,15 @@ namespace
CHECK(etl::is_standard_layout<StandardLayout>::value);
CHECK(!etl::is_standard_layout<NonStandardLayout>::value);
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK(etl::is_standard_layout_v<StandardLayout>);
CHECK(!etl::is_standard_layout_v<NonStandardLayout>);
#endif
#endif
}
#endif
//*************************************************************************
#if (ETL_USING_CPP17 && ETL_USING_STL) || ETL_USING_BUILTIN_IS_TRIVIAL
TEST(test_is_trivial)
{
struct Trivial
@ -864,11 +867,12 @@ namespace
CHECK(!etl::is_trivial<NonTrivialCopy>::value);
CHECK(!etl::is_trivial<NonTrivialDestructor>::value);
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK(etl::is_trivial_v<Trivial>);
CHECK(!etl::is_trivial_v<NonTrivialConstructor>);
#endif
#endif
}
#endif
//*************************************************************************
#if ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE || (ETL_USING_STL && ETL_USING_CPP20 && defined(__cpp_lib_is_layout_compatible))
@ -1265,6 +1269,7 @@ namespace
#endif
//*************************************************************************
#if ETL_USING_STL || ETL_USING_BUILTIN_IS_UNION
TEST(test_is_union)
{
union Union
@ -1287,13 +1292,15 @@ namespace
CHECK(!etl::is_union<NonUnion>::value);
CHECK(!etl::is_union<int>::value);
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK(etl::is_union_v<Union>);
CHECK(!etl::is_union_v<NonUnion>);
#endif
#endif
}
#endif
//*************************************************************************
#if ETL_USING_STL || ETL_USING_BUILTIN_IS_EMPTY
TEST(test_is_empty)
{
struct Empty
@ -1327,13 +1334,15 @@ namespace
CHECK(!etl::is_empty<Virtual>::value);
CHECK(!etl::is_empty<int>::value);
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK(etl::is_empty_v<Empty>);
CHECK(!etl::is_empty_v<NotEmpty>);
#endif
#endif
}
#endif
//*************************************************************************
#if ETL_USING_STL || ETL_USING_BUILTIN_IS_POLYMORPHIC
TEST(test_is_polymorphic)
{
struct NonPolymorphic
@ -1368,13 +1377,15 @@ namespace
CHECK(!etl::is_polymorphic<NonPolymorphic>::value);
CHECK(!etl::is_polymorphic<int>::value);
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK(etl::is_polymorphic_v<Polymorphic>);
CHECK(!etl::is_polymorphic_v<NonPolymorphic>);
#endif
#endif
}
#endif
//*************************************************************************
#if ETL_USING_STL || ETL_USING_BUILTIN_IS_ABSTRACT
TEST(test_is_abstract)
{
struct NonAbstract
@ -1417,14 +1428,15 @@ namespace
CHECK(!etl::is_abstract<NonAbstractPolymorphic>::value);
CHECK(!etl::is_abstract<int>::value);
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK(etl::is_abstract_v<Abstract>);
CHECK(!etl::is_abstract_v<ConcreteDerived>);
#endif
#endif
}
#endif
//*************************************************************************
#if ETL_USING_CPP14
#if ETL_USING_CPP14 && (ETL_USING_STL || ETL_USING_BUILTIN_IS_FINAL)
TEST(test_is_final)
{
struct NonFinal
@ -1481,7 +1493,7 @@ namespace
#endif
//*************************************************************************
#if ETL_USING_CPP17
#if ETL_USING_CPP17 && (ETL_USING_STL || ETL_USING_BUILTIN_IS_AGGREGATE)
TEST(test_is_aggregate)
{
struct Aggregate
@ -1542,6 +1554,7 @@ namespace
#endif
//*************************************************************************
#if ETL_USING_STL || ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR
TEST(test_has_virtual_destructor)
{
struct NonVirtualDestructor
@ -1583,14 +1596,15 @@ namespace
CHECK(!etl::has_virtual_destructor<int>::value);
CHECK(!etl::has_virtual_destructor<int*>::value);
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK(etl::has_virtual_destructor_v<VirtualDestructor>);
CHECK(!etl::has_virtual_destructor_v<NonVirtualDestructor>);
#endif
#endif
}
#endif
//*************************************************************************
#if ETL_USING_CPP17
#if ETL_USING_CPP17 && (ETL_USING_STL || ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS)
TEST(test_has_unique_object_representations)
{
struct NoPadding
@ -2621,7 +2635,7 @@ namespace
//*************************************************************************
TEST(test_is_lvalue_assignable)
{
#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS)
#if ETL_USING_STL || defined(ETL_USER_DEFINED_TYPE_TRAITS)
#if ETL_USING_CPP17
CHECK((etl::is_lvalue_assignable_v<Copyable, Copyable>));
CHECK(!(etl::is_lvalue_assignable_v<Moveable, Moveable>));
@ -2969,10 +2983,14 @@ namespace
}
//*************************************************************************
#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED || ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE
template <typename T1, typename T2>
using is_trivially_assignable = std::is_trivially_assignable<T1, T2>;
#elif ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE
TEST(test_is_trivially_assignable)
{
#if ETL_USING_CPP11 && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \
&& (ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED || ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE)
#if ETL_USING_CPP11 && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \
&& (ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED || ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE)
CHECK((etl::is_trivially_assignable<int&, int>::value) == (std::is_trivially_assignable<int&, int>::value));
CHECK((etl::is_trivially_assignable<int, int>::value) == (std::is_trivially_assignable<int, int>::value));
CHECK((etl::is_trivially_assignable<Copyable&, const Copyable&>::value) == (std::is_trivially_assignable<Copyable&, const Copyable&>::value));
@ -2980,12 +2998,13 @@ namespace
CHECK((etl::is_trivially_assignable<MoveableCopyable&, const MoveableCopyable&>::value)
== (std::is_trivially_assignable<MoveableCopyable&, const MoveableCopyable&>::value));
#if ETL_USING_CPP17
#if ETL_USING_CPP17
CHECK((etl::is_trivially_assignable_v<int&, int>) == (std::is_trivially_assignable_v<int&, int>));
CHECK((etl::is_trivially_assignable_v<Copyable&, const Copyable&>) == (std::is_trivially_assignable_v<Copyable&, const Copyable&>));
#endif
#endif
#endif
}
#endif
//*************************************************************************
TEST(test_is_trivially_copy_assignable)
@ -3343,11 +3362,12 @@ namespace
TEST(test_is_constant_evaluated)
{
constexpr bool c0 = etl::is_constant_evaluated();
#if !ETL_USING_CPP23 && defined(ETL_COMPILER_MICROSOFT)
#if (!ETL_USING_CPP23 && (defined(ETL_COMPILER_MICROSOFT) || !ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED))
// Not supported on MSVC via __has_builtin, see
// determine_builtin_support.h
CHECK_FALSE(c0);
#else
CHECK_TRUE(c0);
#endif

View File

@ -2726,6 +2726,40 @@ namespace
}
};
//*************************************************************************
TEST(test_variant_visit_dispatches_every_alternative)
{
etl::variant<int8_t, uint8_t, int16_t> variant;
variant_test_visit_dispatcher visitor;
variant = int8_t{};
CHECK_EQUAL(5, etl::visit(visitor, variant));
variant = uint8_t{};
CHECK_EQUAL(6, etl::visit(visitor, variant));
variant = int16_t{};
CHECK_EQUAL(7, etl::visit(visitor, variant));
}
//*************************************************************************
TEST(test_variant_visit_rejects_valueless_variant)
{
etl::variant<int8_t, uint8_t> variant(etl::private_variant::valueless_t{});
variant_test_visit_dispatcher visitor;
CHECK_THROW(etl::visit(visitor, variant), etl::bad_variant_access);
}
//*************************************************************************
TEST(test_variant_multiple_visit_rejects_valueless_later_variant)
{
etl::variant<int8_t, uint8_t> variant1;
etl::variant<int8_t, uint16_t, uint8_t> variant2(etl::private_variant::valueless_t{});
CHECK_THROW(etl::visit<int16_t>(test_variant_multiple_visit_helper{}, variant1, variant2), etl::bad_variant_access);
}
TEST(test_variant_multiple_visit)
{
etl::variant<int8_t, uint8_t> variant1;

View File

@ -3596,8 +3596,6 @@
<ClInclude Include="..\..\include\etl\private\diagnostic_unused_function_push.h" />
<ClInclude Include="..\..\include\etl\private\tuple_element.h" />
<ClInclude Include="..\..\include\etl\private\tuple_size.h" />
<ClInclude Include="..\..\include\etl\private\variant_select_do_operator.h" />
<ClInclude Include="..\..\include\etl\private\variant_select_do_visitor.h" />
<ClInclude Include="..\..\include\etl\pseudo_moving_average.h" />
<ClInclude Include="..\..\include\etl\delegate.h" />
<ClInclude Include="..\..\include\etl\delegate_service.h" />

View File

@ -1407,12 +1407,6 @@
<ClInclude Include="..\..\include\etl\index_of_type.h">
<Filter>ETL\Utilities</Filter>
</ClInclude>
<ClInclude Include="..\..\include\etl\private\variant_select_do_visitor.h">
<Filter>ETL\Private</Filter>
</ClInclude>
<ClInclude Include="..\..\include\etl\private\variant_select_do_operator.h">
<Filter>ETL\Private</Filter>
</ClInclude>
<ClInclude Include="..\..\include\etl\monostate.h">
<Filter>ETL\Utilities</Filter>
</ClInclude>