Compare commits

...

17 Commits

Author SHA1 Message Date
f9bdafd3ca Remove C++11 requirements from test/Jamfile 2024-05-18 03:18:56 +03:00
38293da18e Update .drone.jsonnet 2024-05-18 02:43:52 +03:00
65ab0f8cef Update ci.yml 2024-05-17 22:04:55 +03:00
78796d0e7d Increase workaround to < 1950, because VS2022 has reached _MSC_VER=1940. Refs #43. 2024-05-17 21:44:21 +03:00
ff36c3aa1f Merge pull request #42 from K-ballo/more-natvis
Improve natvis
2024-03-25 02:22:20 +02:00
f0acc9326e Work around MSVC failures in variant_derived_construct2. Refs #43. 2024-03-24 19:16:09 +02:00
a936eae01b Add test/variant_derived_construct2. Refs #43. 2024-03-24 18:41:49 +02:00
77234b514c Improve natvis:
- extend support from 10 to 40 alternatives,
- split single-buffer vs double-buffer definitions,
- adjust display string to follow MS definition for std::variant
2024-03-23 16:04:54 -03:00
c125b32938 Add msvc-14.3 /permissive- to Drone 2024-02-08 20:58:45 +02:00
3298078c8b Update .drone.jsonnet 2024-01-11 22:05:28 +02:00
a38839febc Update ci.yml 2024-01-11 21:20:40 +02:00
c3071b7d0b Merge pull request #40 from Lastique/patch-1
Add missing dots in visit_by_index docs
2024-01-11 21:03:37 +02:00
9cf32980a9 Add missing dots in visit_by_index docs 2024-01-11 20:18:06 +03:00
9e4234bfd5 Merge pull request #39 from 13steinj/develop
Suppress -Wuninitialized in emplace_impl
2023-10-24 12:42:10 +03:00
55f1332ce0 Suppress -Wuninitialized in emplace_impl
Closes #38
2023-10-23 15:46:15 -05:00
db12c36b89 Remove unnecessary includes 2023-10-11 18:28:11 +03:00
a5cb0582d5 Make tag_invoke_L2 more msvc-14.0-friendly 2023-09-03 18:28:49 +03:00
7 changed files with 452 additions and 152 deletions

View File

@ -97,258 +97,307 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
[
linux_pipeline(
"Linux 14.04 GCC 4.8* 32/64",
"cppalliance/droneubuntu1404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11', ADDRMD: '32,64' },
"Linux 16.04 GCC 4.8 32/64",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11', ADDRMD: '32,64' },
"g++-4.8-multilib",
),
linux_pipeline(
"Linux 14.04 GCC 4.9 32/64",
"cppalliance/droneubuntu1404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-4.9', CXXSTD: '03,11', ADDRMD: '32,64' },
"Linux 16.04 GCC 4.9 32/64",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-4.9', CXXSTD: '11', ADDRMD: '32,64' },
"g++-4.9-multilib",
[ "ppa:ubuntu-toolchain-r/test" ],
),
linux_pipeline(
"Linux 16.04 GCC 5* 32/64",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 18.04 GCC 6 32/64",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-6', CXXSTD: '03,11,14', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-6', CXXSTD: '11,14', ADDRMD: '32,64' },
"g++-6-multilib",
),
linux_pipeline(
"Linux 18.04 GCC 7* 32/64",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14,17', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 18.04 GCC 8 32/64",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-8', CXXSTD: '03,11,14,17', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-8', CXXSTD: '11,14,17', ADDRMD: '32,64' },
"g++-8-multilib",
),
linux_pipeline(
"Linux 20.04 GCC 9* 32/64",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14,17,2a', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 20.04 GCC 9* ARM64",
"cppalliance/droneubuntu2004:multiarch",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14,17,2a' },
arch="arm64",
),
linux_pipeline(
"Linux 20.04 GCC 9* S390x",
"cppalliance/droneubuntu2004:multiarch",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14,17,2a' },
arch="s390x",
),
linux_pipeline(
"Linux 20.04 GCC 10 32/64",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-10', CXXSTD: '03,11,14,17,20', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-10', CXXSTD: '11,14,17,20', ADDRMD: '32,64' },
"g++-10-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 11* 32/64",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14,17,2a', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 22.04 GCC 12 32 ASAN",
"Linux 22.04 GCC 12 32/64",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '03,11,14,17,20,2b', ADDRMD: '32' } + asan,
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '11,14,17,20,2b', ADDRMD: '32,64' },
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 ASAN",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '03,11,14,17,20,2b', ADDRMD: '64' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 23.04 GCC 13 32/64",
"Linux 23.04 GCC 13 32 ASAN",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '03,11,14,17,20,2b', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14,17,20,2b', ADDRMD: '32' } + asan,
"g++-13-multilib",
),
linux_pipeline(
"Linux 23.04 GCC 13 64 ASAN",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14,17,20,2b', ADDRMD: '64' } + asan,
"g++-13-multilib",
),
linux_pipeline(
"Linux 23.04 GCC 13 32 UBSAN",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14,17,20,2b', ADDRMD: '32' } + ubsan,
"g++-13-multilib",
),
linux_pipeline(
"Linux 23.04 GCC 13 64 UBSAN",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14,17,20,2b', ADDRMD: '64' } + ubsan,
"g++-13-multilib",
),
linux_pipeline(
"Linux 24.04 GCC 14 32",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-14', CXXSTD: '11,14,17,20,2b', ADDRMD: '32' },
"g++-14-multilib",
),
linux_pipeline(
"Linux 24.04 GCC 14 64",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-14', CXXSTD: '11,14,17,20,2b', ADDRMD: '64' },
"g++-14-multilib",
),
linux_pipeline(
"Linux 16.04 Clang 3.5",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.5', CXXSTD: '03,11' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.5', CXXSTD: '11' },
"clang-3.5",
),
linux_pipeline(
"Linux 16.04 Clang 3.6",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.6', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.6', CXXSTD: '11,14' },
"clang-3.6",
),
linux_pipeline(
"Linux 16.04 Clang 3.7",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.7', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.7', CXXSTD: '11,14' },
"clang-3.7",
),
linux_pipeline(
"Linux 16.04 Clang 3.8",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.8', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.8', CXXSTD: '11,14' },
"clang-3.8",
),
linux_pipeline(
"Linux 18.04 Clang 3.9",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.9', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.9', CXXSTD: '11,14' },
"clang-3.9",
),
linux_pipeline(
"Linux 18.04 Clang 4.0",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-4.0', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-4.0', CXXSTD: '11,14' },
"clang-4.0",
),
linux_pipeline(
"Linux 18.04 Clang 5.0",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-5.0', CXXSTD: '03,11,14,1z' },
{ TOOLSET: 'clang', COMPILER: 'clang++-5.0', CXXSTD: '11,14,1z' },
"clang-5.0",
),
linux_pipeline(
"Linux 18.04 Clang 6.0",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-6.0', CXXSTD: '03,11,14,17' },
{ TOOLSET: 'clang', COMPILER: 'clang++-6.0', CXXSTD: '11,14,17' },
"clang-6.0",
),
linux_pipeline(
"Linux 20.04 Clang 7",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-7', CXXSTD: '03,11,14,17' },
{ TOOLSET: 'clang', COMPILER: 'clang++-7', CXXSTD: '11,14,17' },
"clang-7",
),
linux_pipeline(
"Linux 20.04 Clang 8",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-8', CXXSTD: '03,11,14,17' },
{ TOOLSET: 'clang', COMPILER: 'clang++-8', CXXSTD: '11,14,17' },
"clang-8",
),
linux_pipeline(
"Linux 20.04 Clang 9",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-9', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-9', CXXSTD: '11,14,17,2a' },
"clang-9",
),
linux_pipeline(
"Linux 20.04 Clang 10",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-10', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-10', CXXSTD: '11,14,17,2a' },
"clang-10",
),
linux_pipeline(
"Linux 20.04 Clang 11",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-11', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-11', CXXSTD: '11,14,17,2a' },
"clang-11",
),
linux_pipeline(
"Linux 20.04 Clang 12",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-12', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-12', CXXSTD: '11,14,17,2a' },
"clang-12",
),
linux_pipeline(
"Linux 22.04 Clang 13",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-13', CXXSTD: '03,11,14,17,20,2b' },
{ TOOLSET: 'clang', COMPILER: 'clang++-13', CXXSTD: '11,14,17,20,2b' },
"clang-13",
),
linux_pipeline(
"Linux 22.04 Clang 14",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '03,11,14,17,20,2b' },
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '11,14,17,20,2b' },
"clang-14",
),
linux_pipeline(
"Linux 22.04 Clang 15 UBSAN",
"Linux 22.04 Clang 15",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-15', CXXSTD: '03,11,14,17,20,2b' } + ubsan,
"clang-15",
),
linux_pipeline(
"Linux 22.04 Clang 15 ASAN",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-15', CXXSTD: '03,11,14,17,20,2b' } + asan,
{ TOOLSET: 'clang', COMPILER: 'clang++-15', CXXSTD: '11,14,17,20,2b' },
"clang-15",
),
linux_pipeline(
"Linux 23.04 Clang 16",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-16', CXXSTD: '03,11,14,17,20,2b' },
{ TOOLSET: 'clang', COMPILER: 'clang++-16', CXXSTD: '11,14,17,20,2b' },
"clang-16",
),
linux_pipeline(
"Linux 23.10 Clang 17 UBSAN",
"cppalliance/droneubuntu2310:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-17', CXXSTD: '11,14,17,20,2b' } + ubsan,
"clang-17",
),
linux_pipeline(
"Linux 23.10 Clang 17 ASAN",
"cppalliance/droneubuntu2310:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-17', CXXSTD: '11,14,17,20,2b' } + asan,
"clang-17",
),
linux_pipeline(
"Linux 24.04 Clang 18 UBSAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' } + ubsan,
"clang-18",
),
linux_pipeline(
"Linux 24.04 Clang 18 ASAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' } + asan,
"clang-18",
),
macos_pipeline(
"MacOS 10.15 Xcode 12.2 UBSAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '03,11,14,1z' } + ubsan,
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,1z' } + ubsan,
),
macos_pipeline(
"MacOS 10.15 Xcode 12.2 ASAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '03,11,14,1z' } + asan,
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,1z' } + asan,
),
macos_pipeline(
"MacOS 12.4 Xcode 13.4.1 UBSAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '03,11,14,17,20,2b' } + ubsan,
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,17,20,2b' } + ubsan,
xcode_version = "13.4.1", osx_version = "monterey", arch = "arm64",
),
macos_pipeline(
"MacOS 12.4 Xcode 13.4.1 ASAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '03,11,14,17,20,2b' } + asan,
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,17,20,2b' } + asan,
xcode_version = "13.4.1", osx_version = "monterey", arch = "arm64",
),
windows_pipeline(
"Windows VS2015 msvc-14.0",
"cppalliance/dronevs2015",
{ TOOLSET: 'msvc-14.0', CXXSTD: '14,latest' },
{ TOOLSET: 'msvc-14.0', CXXSTD: '14,latest', B2_DONT_EMBED_MANIFEST: '1' },
),
windows_pipeline(
@ -358,9 +407,9 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
),
windows_pipeline(
"Windows VS2017 msvc-14.1 Strict",
"Windows VS2017 msvc-14.1 permissive-",
"cppalliance/dronevs2017",
{ TOOLSET: 'msvc-14.1', CXXSTD: '14,17,latest', CXXFLAGS: '/permissive-' },
{ TOOLSET: 'msvc-14.1', CXXSTD: '14,17', CXXFLAGS: '/permissive-' },
),
windows_pipeline(
@ -370,9 +419,9 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
),
windows_pipeline(
"Windows VS2019 msvc-14.2 Strict",
"Windows VS2019 msvc-14.2 permissive-",
"cppalliance/dronevs2019",
{ TOOLSET: 'msvc-14.2', CXXSTD: '14,17,20,latest', CXXFLAGS: '/permissive-' },
{ TOOLSET: 'msvc-14.2', CXXSTD: '14,17', CXXFLAGS: '/permissive-' },
),
windows_pipeline(
@ -380,4 +429,10 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
"cppalliance/dronevs2022:1",
{ TOOLSET: 'msvc-14.3', CXXSTD: '14,17,20,latest' },
),
windows_pipeline(
"Windows VS2022 msvc-14.3 permissive-",
"cppalliance/dronevs2022:1",
{ TOOLSET: 'msvc-14.3', CXXSTD: '14,17', CXXFLAGS: '/permissive-' },
),
]

View File

@ -18,131 +18,159 @@ jobs:
matrix:
include:
- toolset: gcc-4.8
cxxstd: "03,11"
cxxstd: "11"
container: ubuntu:16.04
os: ubuntu-latest
container: ubuntu:18.04
install: g++-4.8
- toolset: gcc-5
cxxstd: "03,11,14,1z"
- toolset: gcc-4.9
cxxstd: "11"
container: ubuntu:16.04
os: ubuntu-latest
install: g++-4.9
- toolset: gcc-5
cxxstd: "11,14,1z"
container: ubuntu:18.04
os: ubuntu-latest
install: g++-5
- toolset: gcc-6
cxxstd: "03,11,14,1z"
os: ubuntu-latest
cxxstd: "11,14,1z"
container: ubuntu:18.04
os: ubuntu-latest
install: g++-6
- toolset: gcc-7
cxxstd: "03,11,14,17"
os: ubuntu-latest
cxxstd: "11,14,17"
container: ubuntu:18.04
os: ubuntu-latest
- toolset: gcc-8
cxxstd: "03,11,14,17,2a"
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: g++-8
- toolset: gcc-9
cxxstd: "03,11,14,17,2a"
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
- toolset: gcc-10
cxxstd: "03,11,14,17,2a"
os: ubuntu-20.04
cxxstd: "11,14,17,2a"
os: ubuntu-22.04
install: g++-10
- toolset: gcc-11
cxxstd: "03,11,14,17,2a"
os: ubuntu-20.04
cxxstd: "11,14,17,2a"
os: ubuntu-22.04
install: g++-11
- toolset: gcc-12
cxxstd: "03,11,14,17,20,2b"
cxxstd: "11,14,17,20,2b"
os: ubuntu-22.04
install: g++-12
- toolset: gcc-13
cxxstd: "03,11,14,17,20,2b"
os: ubuntu-latest
cxxstd: "11,14,17,20,2b"
container: ubuntu:23.04
os: ubuntu-latest
install: g++-13
- toolset: gcc-14
cxxstd: "11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: g++-14
- toolset: clang
compiler: clang++-3.9
cxxstd: "03,11,14"
os: ubuntu-latest
cxxstd: "11,14"
container: ubuntu:18.04
os: ubuntu-latest
install: clang-3.9
- toolset: clang
compiler: clang++-4.0
cxxstd: "03,11,14"
os: ubuntu-latest
cxxstd: "11,14"
container: ubuntu:18.04
os: ubuntu-latest
install: clang-4.0
- toolset: clang
compiler: clang++-5.0
cxxstd: "03,11,14,1z"
os: ubuntu-latest
cxxstd: "11,14,1z"
container: ubuntu:18.04
os: ubuntu-latest
install: clang-5.0
- toolset: clang
compiler: clang++-6.0
cxxstd: "03,11,14,17"
cxxstd: "11,14,17"
os: ubuntu-20.04
install: clang-6.0
- toolset: clang
compiler: clang++-7
cxxstd: "03,11,14,17"
cxxstd: "11,14,17"
os: ubuntu-20.04
install: clang-7
- toolset: clang
compiler: clang++-8
cxxstd: "03,11,14,17"
cxxstd: "11,14,17"
os: ubuntu-20.04
install: clang-8
- toolset: clang
compiler: clang++-9
cxxstd: "03,11,14,17,2a"
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-9
- toolset: clang
compiler: clang++-10
cxxstd: "03,11,14,17,2a"
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-10
- toolset: clang
compiler: clang++-11
cxxstd: "03,11,14,17,2a"
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-11
- toolset: clang
compiler: clang++-12
cxxstd: "03,11,14,17,2a"
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-12
- toolset: clang
compiler: clang++-13
cxxstd: "03,11,14,17,20,2b"
os: ubuntu-22.04
cxxstd: "11,14,17,20,2b"
container: ubuntu:22.04
os: ubuntu-latest
install: clang-13
- toolset: clang
compiler: clang++-14
cxxstd: "03,11,14,17,20,2b"
os: ubuntu-22.04
cxxstd: "11,14,17,20,2b"
container: ubuntu:22.04
os: ubuntu-latest
install: clang-14
- toolset: clang
compiler: clang++-15
cxxstd: "03,11,14,17,20,2b"
os: ubuntu-22.04
cxxstd: "11,14,17,20,2b"
container: ubuntu:22.04
os: ubuntu-latest
install: clang-15
- toolset: clang
compiler: clang++-16
cxxstd: "03,11,14,17,20,2b"
os: ubuntu-latest
cxxstd: "11,14,17,20,2b"
container: ubuntu:23.04
os: ubuntu-latest
install: clang-16
- toolset: clang
cxxstd: "03,11,14,17,2a"
compiler: clang++-17
cxxstd: "11,14,17,20,2b"
container: ubuntu:23.10
os: ubuntu-latest
install: clang-17
- toolset: clang
compiler: clang++-18
cxxstd: "11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: clang-18
- toolset: clang
cxxstd: "11,14,17,2a"
os: macos-11
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
cxxstd: "11,14,17,20,2b"
os: macos-12
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
cxxstd: "11,14,17,20,2b"
os: macos-13
- toolset: clang
cxxstd: "11,14,17,20,2b"
os: macos-14
runs-on: ${{matrix.os}}
container: ${{matrix.container}}
@ -184,7 +212,7 @@ jobs:
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
python3 tools/boostdep/depinst/depinst.py $LIBRARY
./bootstrap.sh
./b2 -d0 headers
@ -220,14 +248,14 @@ jobs:
addrmd: 32,64
os: windows-2022
- toolset: gcc
cxxstd: "03,11,14,17,2a"
cxxstd: "11,14,17,2a"
addrmd: 64
os: windows-2019
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd
@ -271,7 +299,7 @@ jobs:
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
@ -319,7 +347,7 @@ jobs:
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
@ -377,7 +405,7 @@ jobs:
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
@ -430,7 +458,7 @@ jobs:
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd
@ -479,7 +507,7 @@ jobs:
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd
@ -546,7 +574,7 @@ jobs:
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd

View File

@ -157,7 +157,7 @@ template<class R = /*unspecified*/, class F, class... V>
// visit_by_index (extension)
template<class R = /*unspecified*/, class V, class... F>
constexpr /*see below*/ visit_by_index(V&& v, F&&.. f);
constexpr /*see below*/ visit_by_index(V&& v, F&&... f);
// monostate
@ -936,7 +936,7 @@ Remarks: :: If `R` is given explicitly, as in `visit<int>`, the return
```
template<class R = /*unspecified*/, class V, class... F>
constexpr /*see below*/ visit_by_index(V&& v, F&&.. f);
constexpr /*see below*/ visit_by_index(V&& v, F&&... f);
```
[none]
* {blank}

View File

@ -1,32 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="boost::variant2::detail::variant_ma_base_impl&lt;*&gt;" Inheritable="true">
<Intrinsic Name="index" Expression="$T2==1?((int)ix_-1):((int)((ix_-2)/2))"/>
<DisplayString Condition="index()==0&amp;&amp;$T2==1" Optional="true">{st_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==1&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==2&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==3&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==4&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==5&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==6&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==7&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==8&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==9&amp;&amp;$T2==1" Optional="true">{st_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==0&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==1&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==2&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==3&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==4&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==5&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==6&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==7&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==8&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<DisplayString Condition="index()==9&amp;&amp;$T2==0" Optional="true">{st_[ix_%2].rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.rest_.first_} ({index()})</DisplayString>
<Expand>
<Item Name="[index]">index()</Item>
<Item Name="ix_">ix_</Item>
</Expand>
</Type>
<Type Name="boost::variant2::detail::variant_base_impl&lt;*,1,*&gt;">
<Intrinsic Name="index" Expression="(int)ix_ - 1"/>
<DisplayString Condition="index() == 0" Optional="true">{{ index=0, value={*($T2*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 1" Optional="true">{{ index=1, value={*($T3*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 2" Optional="true">{{ index=2, value={*($T4*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 3" Optional="true">{{ index=3, value={*($T5*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 4" Optional="true">{{ index=4, value={*($T6*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 5" Optional="true">{{ index=5, value={*($T7*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 6" Optional="true">{{ index=6, value={*($T8*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 7" Optional="true">{{ index=7, value={*($T9*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 8" Optional="true">{{ index=8, value={*($T10*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 9" Optional="true">{{ index=9, value={*($T11*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 10" Optional="true">{{ index=10, value={*($T12*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 11" Optional="true">{{ index=11, value={*($T13*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 12" Optional="true">{{ index=12, value={*($T14*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 13" Optional="true">{{ index=13, value={*($T15*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 14" Optional="true">{{ index=14, value={*($T16*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 15" Optional="true">{{ index=15, value={*($T17*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 16" Optional="true">{{ index=16, value={*($T18*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 17" Optional="true">{{ index=17, value={*($T19*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 18" Optional="true">{{ index=18, value={*($T20*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 19" Optional="true">{{ index=19, value={*($T21*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 20" Optional="true">{{ index=10, value={*($T22*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 21" Optional="true">{{ index=21, value={*($T23*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 22" Optional="true">{{ index=22, value={*($T24*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 23" Optional="true">{{ index=23, value={*($T25*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 24" Optional="true">{{ index=24, value={*($T26*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 25" Optional="true">{{ index=25, value={*($T27*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 26" Optional="true">{{ index=26, value={*($T28*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 27" Optional="true">{{ index=27, value={*($T29*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 28" Optional="true">{{ index=28, value={*($T30*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 29" Optional="true">{{ index=29, value={*($T31*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 30" Optional="true">{{ index=30, value={*($T32*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 31" Optional="true">{{ index=31, value={*($T33*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 32" Optional="true">{{ index=32, value={*($T34*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 33" Optional="true">{{ index=33, value={*($T35*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 34" Optional="true">{{ index=34, value={*($T36*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 35" Optional="true">{{ index=35, value={*($T37*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 36" Optional="true">{{ index=36, value={*($T38*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 37" Optional="true">{{ index=37, value={*($T39*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 38" Optional="true">{{ index=38, value={*($T40*)&amp;st_} }}</DisplayString>
<DisplayString Condition="index() == 39" Optional="true">{{ index=39, value={*($T41*)&amp;st_} }}</DisplayString>
<Expand>
<Item Name="index">index()</Item>
<Item Name="[value]" Condition="index() == 0" Optional="true">*($T2*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 1" Optional="true">*($T3*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 2" Optional="true">*($T4*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 3" Optional="true">*($T5*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 4" Optional="true">*($T6*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 5" Optional="true">*($T7*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 6" Optional="true">*($T8*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 7" Optional="true">*($T9*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 8" Optional="true">*($T10*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 9" Optional="true">*($T11*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 10" Optional="true">*($T12*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 11" Optional="true">*($T13*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 12" Optional="true">*($T14*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 13" Optional="true">*($T15*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 14" Optional="true">*($T16*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 15" Optional="true">*($T17*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 16" Optional="true">*($T18*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 17" Optional="true">*($T19*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 18" Optional="true">*($T20*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 19" Optional="true">*($T21*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 20" Optional="true">*($T22*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 21" Optional="true">*($T23*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 22" Optional="true">*($T24*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 23" Optional="true">*($T25*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 24" Optional="true">*($T26*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 25" Optional="true">*($T27*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 26" Optional="true">*($T28*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 27" Optional="true">*($T29*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 28" Optional="true">*($T30*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 29" Optional="true">*($T31*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 30" Optional="true">*($T32*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 31" Optional="true">*($T33*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 32" Optional="true">*($T34*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 33" Optional="true">*($T35*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 34" Optional="true">*($T36*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 35" Optional="true">*($T37*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 36" Optional="true">*($T38*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 37" Optional="true">*($T39*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 38" Optional="true">*($T40*)&amp;st_</Item>
<Item Name="[value]" Condition="index() == 39" Optional="true">*($T41*)&amp;st_</Item>
</Expand>
</Type>
<Type Name="boost::variant2::detail::variant_base_impl&lt;*,0,*&gt;">
<Intrinsic Name="index" Expression="(int)((ix_-2)/2)"/>
<DisplayString Condition="index() == 0" Optional="true">{{ index=0, value={*($T2*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 1" Optional="true">{{ index=1, value={*($T3*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 2" Optional="true">{{ index=2, value={*($T4*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 3" Optional="true">{{ index=3, value={*($T5*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 4" Optional="true">{{ index=4, value={*($T6*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 5" Optional="true">{{ index=5, value={*($T7*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 6" Optional="true">{{ index=6, value={*($T8*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 7" Optional="true">{{ index=7, value={*($T9*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 8" Optional="true">{{ index=8, value={*($T10*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 9" Optional="true">{{ index=9, value={*($T11*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 10" Optional="true">{{ index=10, value={*($T12*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 11" Optional="true">{{ index=11, value={*($T13*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 12" Optional="true">{{ index=12, value={*($T14*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 13" Optional="true">{{ index=13, value={*($T15*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 14" Optional="true">{{ index=14, value={*($T16*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 15" Optional="true">{{ index=15, value={*($T17*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 16" Optional="true">{{ index=16, value={*($T18*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 17" Optional="true">{{ index=17, value={*($T19*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 18" Optional="true">{{ index=18, value={*($T20*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 19" Optional="true">{{ index=19, value={*($T21*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 20" Optional="true">{{ index=20, value={*($T22*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 21" Optional="true">{{ index=21, value={*($T23*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 22" Optional="true">{{ index=22, value={*($T24*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 23" Optional="true">{{ index=23, value={*($T25*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 24" Optional="true">{{ index=24, value={*($T26*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 25" Optional="true">{{ index=25, value={*($T27*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 26" Optional="true">{{ index=26, value={*($T28*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 27" Optional="true">{{ index=27, value={*($T29*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 28" Optional="true">{{ index=28, value={*($T30*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 29" Optional="true">{{ index=29, value={*($T31*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 30" Optional="true">{{ index=30, value={*($T32*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 31" Optional="true">{{ index=31, value={*($T33*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 32" Optional="true">{{ index=32, value={*($T34*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 33" Optional="true">{{ index=33, value={*($T35*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 34" Optional="true">{{ index=34, value={*($T36*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 35" Optional="true">{{ index=35, value={*($T37*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 36" Optional="true">{{ index=36, value={*($T38*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 37" Optional="true">{{ index=37, value={*($T39*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 38" Optional="true">{{ index=38, value={*($T40*)&amp;st_[ix_%2]} }}</DisplayString>
<DisplayString Condition="index() == 39" Optional="true">{{ index=39, value={*($T41*)&amp;st_[ix_%2]} }}</DisplayString>
<Expand>
<Item Name="index">index()</Item>
<Item Name="[value]" Condition="index() == 0" Optional="true">*($T2*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 1" Optional="true">*($T3*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 2" Optional="true">*($T4*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 3" Optional="true">*($T5*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 4" Optional="true">*($T6*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 5" Optional="true">*($T7*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 6" Optional="true">*($T8*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 7" Optional="true">*($T9*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 8" Optional="true">*($T10*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 9" Optional="true">*($T11*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 10" Optional="true">*($T12*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 11" Optional="true">*($T13*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 12" Optional="true">*($T14*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 13" Optional="true">*($T15*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 14" Optional="true">*($T16*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 15" Optional="true">*($T17*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 16" Optional="true">*($T18*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 17" Optional="true">*($T19*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 18" Optional="true">*($T20*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 19" Optional="true">*($T21*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 20" Optional="true">*($T22*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 21" Optional="true">*($T23*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 22" Optional="true">*($T24*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 23" Optional="true">*($T25*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 24" Optional="true">*($T26*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 25" Optional="true">*($T27*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 26" Optional="true">*($T28*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 27" Optional="true">*($T29*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 28" Optional="true">*($T30*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 29" Optional="true">*($T31*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 30" Optional="true">*($T32*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 31" Optional="true">*($T33*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 32" Optional="true">*($T34*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 33" Optional="true">*($T35*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 34" Optional="true">*($T36*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 35" Optional="true">*($T37*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 36" Optional="true">*($T38*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 37" Optional="true">*($T39*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 38" Optional="true">*($T40*)&amp;st_[ix_%2]</Item>
<Item Name="[value]" Condition="index() == 39" Optional="true">*($T41*)&amp;st_[ix_%2]</Item>
</Expand>
</Type>
</AutoVisualizer>

View File

@ -18,13 +18,11 @@
#include <boost/assert/source_location.hpp>
#include <boost/config.hpp>
#include <boost/config/workaround.hpp>
#include <boost/cstdint.hpp>
#include <cstddef>
#include <type_traits>
#include <exception>
#include <initializer_list>
#include <utility>
#include <functional> // std::hash
#include <typeindex> // std::hash
#include <iosfwd>
#include <cstdint>
#include <cerrno>
@ -691,8 +689,11 @@ template<class T1, class... T> union variant_storage_impl<mp11::mp_true, T1, T..
# pragma GCC diagnostic push
// False positive in at least GCC 7 and GCC 10 ASAN triggered by monostate (via result<void>)
# pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#if __GNUC__ >= 12
// False positive in at least GCC 12 and GCC 13 ASAN and -Og triggered by monostate (via result<void>)
# pragma GCC diagnostic ignored "-Wuninitialized"
#endif
#endif
*this = variant_storage_impl( mp11::mp_size_t<I>(), std::forward<A>(a)... );
#if defined(BOOST_GCC) && (__GNUC__ >= 7)
@ -1633,7 +1634,17 @@ public:
template<class U,
class Ud = typename std::decay<U>::type,
class E1 = typename std::enable_if< !std::is_same<Ud, variant>::value && !std::is_base_of<variant, Ud>::value && !detail::is_in_place_index<Ud>::value && !detail::is_in_place_type<Ud>::value >::type,
#if BOOST_WORKAROUND(BOOST_MSVC, < 1950)
class V = mp11::mp_apply_q< mp11::mp_bind_front<detail::resolve_overload_type, U&&>, variant >,
#else
class V = detail::resolve_overload_type<U&&, T...>,
#endif
class E2 = typename std::enable_if<std::is_constructible<V, U&&>::value>::type
>
constexpr variant( U&& u )
@ -2319,8 +2330,8 @@ namespace detail
inline std::size_t hash_value_impl_( mp11::mp_true, std::size_t index, std::size_t value )
{
boost::ulong_long_type hv = ( boost::ulong_long_type( 0xCBF29CE4 ) << 32 ) + 0x84222325;
boost::ulong_long_type const prime = ( boost::ulong_long_type( 0x00000100 ) << 32 ) + 0x000001B3;
unsigned long long hv = 0xCBF29CE484222325ull;
unsigned long long const prime = 0x100000001B3ull;
hv ^= index;
hv *= prime;
@ -2497,16 +2508,16 @@ template<class V> struct tag_invoke_L2
boost::json::value const& v;
typename boost::json::result_for<V, boost::json::value>::type& r;
template<class I> void operator()( I i ) const
template<class I> void operator()( I /*i*/ ) const
{
if( !r )
{
using Ti = mp11::mp_at_c<V, i>;
using Ti = mp11::mp_at_c<V, I::value>;
auto r2 = boost::json::try_value_to<Ti>( v );
if( r2 )
{
r.emplace( in_place_index_t<i>{}, std::move( *r2 ) );
r.emplace( in_place_index_t<I::value>{}, std::move( *r2 ) );
}
}
}

View File

@ -16,8 +16,6 @@ project
: requirements
[ requires cxx11_variadic_templates cxx11_template_aliases cxx11_decltype cxx11_constexpr ]
<toolset>msvc:<warnings-as-errors>on
<toolset>gcc:<warnings-as-errors>on
<toolset>clang:<warnings-as-errors>on
@ -133,3 +131,5 @@ run variant_json_value_from.cpp : : : $(JSON) ;
run variant_json_value_to.cpp : : : $(JSON) ;
compile variant_uses_double_storage.cpp ;
run variant_derived_construct2.cpp ;

View File

@ -0,0 +1,60 @@
// Copyright 2024 Peter Dimov.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#include <boost/variant2/variant.hpp>
#include <boost/core/lightweight_test.hpp>
struct expr: boost::variant2::variant<bool, int, double>
{
using variant::variant;
};
int main()
{
using boost::variant2::get;
{
expr v{ true };
BOOST_TEST_EQ( v.index(), 0 );
BOOST_TEST_EQ( get<0>(v), true );
}
{
expr v{ 2 };
BOOST_TEST_EQ( v.index(), 1 );
BOOST_TEST_EQ( get<1>(v), 2 );
}
{
expr v{ 3.0 };
BOOST_TEST_EQ( v.index(), 2 );
BOOST_TEST_EQ( get<2>(v), 3.0 );
}
{
expr v( true );
BOOST_TEST_EQ( v.index(), 0 );
BOOST_TEST_EQ( get<0>(v), true );
}
{
expr v( 2 );
BOOST_TEST_EQ( v.index(), 1 );
BOOST_TEST_EQ( get<1>(v), 2 );
}
{
expr v( 3.0 );
BOOST_TEST_EQ( v.index(), 2 );
BOOST_TEST_EQ( get<2>(v), 3.0 );
}
return boost::report_errors();
}