Skip to content

Conversation

michaeldleslie
Copy link
Contributor

@michaeldleslie michaeldleslie commented Aug 20, 2025

Fixes #3947

Problem

  • OnceAction has templated forwarding constructors constrained for callable types.
  • On QNX SDK versions prior to 8.0, std::tuple<OnceAction> can incorrectly satisfy those constraints because of how that libc++ implements std::tuple converting constructors.
  • Upstream, most libc++/libstdc++/MSVC versions short-circuit correctly, so the bug is only visible on QNX. But nothing about OnceAction should ever allow a tuple to be treated as a callable.
  • Note existence of QNX downstream patch to achieve the same thing at qnx/googletest@ceebbad#diff-91a00bafe0b6186545af81d16fdc9a5fd0afccfc336bdbbcab5deb7de63a57f6L475

Solution

  • Update OnceAction forwarding constructors to exclude tuple-like types.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

QNX compilation failure of .WillOnce()
1 participant