Skip to content

tests.py should map /std:c++latest to 'c++2b' #2001

@StephanTLavavej

Description

@StephanTLavavej

tests.py maps compiler options to "features", used by the libcxx test suite:

if flag[5:] == 'c++latest':
self._addCustomFeature('c++2a')
elif flag[5:] == 'c++20':
self.requires.append('unsupported_potato') # TRANSITION, VS2019 Preview 16.11
elif flag[5:] == 'c++17':
self._addCustomFeature('c++17')
elif flag[5:] == 'c++14':
self._addCustomFeature('c++14')

The toolset update #1953 is mapping /std:c++20 to 'c++2a'. However, it's still mapping /std:c++latest to 'c++2a'. This prevents libcxx's C++23 tests from running.

For example, #1950 is implementing is_scoped_enum, but attempting to unskip its test

# C++23 P1048R1 "is_scoped_enum"
utilities\meta\meta.unary\meta.unary.prop\is_scoped_enum.pass.cpp

leads to it being detected as unsupported. (The test marks itself as unsupported in C++03 through C++2a inclusive, meaning it expects C++2b.)

As I recall, I initially attempted to map /std:c++latest to 'c++2b' in toolset update #1953, but encountered a couple of libcxx tests that weren't expecting this. This might be resolved if we update to libcxx's latest commit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    fixedSomething works now, yay!testRelated to test code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions