STL: We should _STD qualify _Ugly function calls to avoid ADL
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 1.7k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 22
Description
See "ADL can interfere even with uglified names" by Arthur O'Dwyer.
We've survived 20+ years with unqualified _Ugly function calls, but perhaps we should consider changing this. It's possible that this could improve throughput.
List of headers to process, as mentioned in https://github.com/microsoft/STL/issues/140#issuecomment-1247361313 below (cvt subtree intentionally omitted):
-
__msvc_all_public_headers.hpp -
__msvc_chrono.hpp -
__msvc_format_ucd_tables.hpp -
__msvc_int128.hpp -
__msvc_iter_core.hpp -
__msvc_system_error_abi.hpp -
__msvc_tzdb.hpp -
__msvc_xlocinfo_types.hpp -
algorithm -
any -
array -
atomic -
barrier -
bit -
bitset -
cassert -
ccomplex -
cctype -
cerrno -
cfenv -
cfloat -
charconv -
chrono -
cinttypes -
ciso646 -
climits -
clocale -
cmath -
codecvt -
compare -
complex -
concepts -
condition_variable -
coroutine -
csetjmp -
csignal -
cstdalign -
cstdarg -
cstdbool -
cstddef -
cstdint -
cstdio -
cstdlib -
cstring -
ctgmath -
ctime -
cuchar -
cwchar -
cwctype -
deque -
exception -
execution -
expected -
experimental/coroutine -
experimental/deque -
experimental/filesystem -
experimental/forward_list -
experimental/generator -
experimental/list -
experimental/map -
experimental/resumable -
experimental/set -
experimental/string -
experimental/unordered_map -
experimental/unordered_set -
experimental/vector -
filesystem -
format -
forward_list -
fstream -
functional -
future -
hash_map -
hash_set -
initializer_list -
iomanip -
ios -
iosfwd -
iostream -
iso646.h -
istream -
iterator -
latch -
limits -
list -
llll -
locale -
map -
memory -
memory_resource -
mutex -
new -
numbers -
numeric -
optional -
ostream -
queue -
random -
ranges -
ratio -
regex -
scoped_allocator -
semaphore -
set -
shared_mutex -
source_location -
span -
spanstream -
sstream -
stack -
stacktrace -
stdatomic.h -
stdexcept -
stop_token -
streambuf -
string -
string_view -
strstream -
syncstream -
system_error -
thread -
tuple -
type_traits -
typeindex -
typeinfo -
unordered_map -
unordered_set -
use_ansi.h -
utility -
valarray -
variant(#3148) -
vector -
version -
xatomic.h -
xatomic_wait.h -
xbit_ops.h -
xcall_once.h -
xcharconv.h -
xcharconv_ryu.h -
xcharconv_ryu_tables.h -
xcharconv_tables.h -
xerrc.h -
xfacet -
xfilesystem_abi.h -
xhash -
xiosbase -
xkeycheck.h -
xlocale -
xlocbuf -
xlocinfo -
xlocmes -
xlocmon -
xlocnum -
xloctime -
xmemory -
xnode_handle.h -
xpolymorphic_allocator.h -
xsmf_control.h -
xstddef -
xstring -
xthreads.h -
xtimec.h -
xtr1common -
xtree -
xutility -
ymath.h -
yvals.h -
yvals_core.h
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Review the linked ADL article and the issue comment that defines the header list, then inspect the listed STL headers and the completed variant item (#3148). Work through the checklist while checking the existing _Ugly calls and excluding the cvt subtree. Done means the applicable headers are processed and the checklist reflects the completed work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- devtools
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100