microsoft / microsoft/STL

STL: We should _STD qualify _Ugly function calls to avoid ADL

Open
#140 20 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.