You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_structured_bindings.pass.cpp fails at line 153 on MSVC:
Assertion failed: p == -1, ... tuple_size_structured_bindings.pass.cpp, line 153
test_after_tuple_size_specialization declares Test const t{99}, then auto& [p] = t after a std::tuple_size<Test> specialization and matching get<0> returning -1. clang/gcc route the binding through the tuple protocol (p == -1); MSVC keeps binding to the underlying member (p == 99).
MSVC needs an equivalent guard, or the structured-binding lookup needs to honor late tuple_size specializations under MSVC.
Reproduces on every MSVC libcu++ Test job: CTK12.9/MSVC14.44 and CTK13.2/MSVC14.50, C++20, RTX4090 and H100. Discovered while enabling libcu++ MSVC GPU jobs in #5725, which marks the test // UNSUPPORTED: msvc to unblock; this issue tracks the underlying behavior.
Type of Bug
Runtime Error
Component
libcu++
Describe the bug
std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_structured_bindings.pass.cppfails at line 153 on MSVC:test_after_tuple_size_specializationdeclaresTest const t{99}, thenauto& [p] = tafter astd::tuple_size<Test>specialization and matchingget<0>returning-1. clang/gcc route the binding through the tuple protocol (p == -1); MSVC keeps binding to the underlying member (p == 99).The test already guards an analogous NVRTC quirk:
MSVC needs an equivalent guard, or the structured-binding lookup needs to honor late
tuple_sizespecializations under MSVC.Reproduces on every MSVC libcu++ Test job: CTK12.9/MSVC14.44 and CTK13.2/MSVC14.50, C++20, RTX4090 and H100. Discovered while enabling libcu++ MSVC GPU jobs in #5725, which marks the test
// UNSUPPORTED: msvcto unblock; this issue tracks the underlying behavior.How to Reproduce
libcudacxx.test.litagainst MSVC (CTK12.9/MSVC14.44 or CTK13.2/MSVC14.50, C++20).Expected behavior
After specializing
std::tuple_size<Test>withvalue = 1and a matchingget<0>returning-1,auto& [p] = tshould bindpto-1, matching clang/gcc.Operating System
Windows Server (CI runner image)
NVCC version
CTK 12.9 (MSVC 14.44.35207) and CTK 13.2 (MSVC 14.50.35717).