-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
STL: Mark simple casting free functions with _MSVC_INTRINSIC
#3548
Labels
Comments
The actual changes will be good-first-issue material, but the need to do a global audit is beyond what we typically consider such an issue. |
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
#3182 added
[[msvc::intrinsic]]
attribute to the following reference-casting function templates:forward
forward_like
move
move_if_noexcept
, which made MSVC treat a call to such a function equivalent to a simple
static_cast
.Per local verifications and response from @cdacamar on Discord, it works for free functions which is equivalent to a cast. Here is an incomplete list of such functions, including internal helpers, in MSVC STL:
[[msvc::intrinsic]]
works)as_const
(in<utility>
)_Possibly_const_range
(in<xutility>
)_As_lvalue
(in<ranges>
)_As_const_pointer
(in<xutility>
)to_integer
(in<cstddef>
)to_underlying
(in<utility>
)It would be great to find all of these functions and mark them with
_MSVC_INTRINSIC
.Note that the
[[msvc::intrinsic]]
attribute currently doesn't work for member functions (both non-static and static ones), so even thoughidentity::operator()
looks like a good candidate, it's better not to mark it with_MSVC_INTRINSIC
at this moment.@JMazurkiewicz suggested that this might be a nice candidate for "good first issue".
The text was updated successfully, but these errors were encountered: