Skip to content

[exec.util.cmplsig.trans] Replace verbose add_lvalue_reference_t with plain & #7854

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

frederick-vs-ja
Copy link
Contributor

In the example in [exec.util.cmplsig.trans], the fallback mechanism of add_lvalue_reference_t doesn't make sense, because when set_value_t(Args&...) is an invalid type, set_value_t(add_lvalue_reference_t<Args>...) can't be valid. Although use of add_lvalue_reference_t possibly triggers more accepts-invalid compiler bugs.

Note that other uses of add_lvalue_reference_t are meaningful:

  • For common_with and common_referene, uses of add_lvalue_reference_t are necessary to make common_with<void, void> satisfied.
  • For unique_ptr, it is possible to form a unique_ptr<void, D> whose operator* is well-formed and returns void, as D::pointer can also have an operator* returning void (demo).

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

Successfully merging this pull request may close these issues.

1 participant