Calling Functions
summary
Walks through the exact call-resolution pipeline used by C++ compilers: name lookup is irreversible (once a name is found the compiler never backtracks), overload resolution ranks matches and picks a best viable candidate, then checks access and special rules such as function template specialization order, ADL, SFINAE, and deleted functions. Highlights: access checked after overload resolution, argument-dependent lookup only for user types, and deleted functions still exist and produce hard errors. Runs in a 60‑minute slot and intentionally skips template argument deduction and virtual dispatch.
AI-written summary · about
chapters (15)
- 0:00Intro
- 2:34Overview
- 5:22Un-Qualified Name Lookup
- 15:36Argument Dependent Lookup
- 20:30Two-Phase Lookup
- 22:06Template Argument Deduction
- 25:55Finding a Best Match (1 Parameter)
- 30:40Templates vs. Non-Templates
- 32:28Promotions (Rank 2)
- 34:07Standard Conversions (Rank 3)
- 38:33User-Defined Conversions
- 40:35Finding a Best Match (Multiple Parameters)
- 45:38Access Labels
- 49:19Function Template Specialization
- 53:28Deleting Functions
related talks
54mInteractive Metaprogramming Shell based on Clang
32mV8 by example: A journey through the compilation pipeline
44mJavaScript: Function [[Call]] – ECMA-262 specification contract
25mPerformance profiling for V8
49mLiving The Loopless Life: Techniques For Removing Explicit Loops And Recursion
04mConstexpr and operator overloading: Why everything is terrible
28mPerformance Profiling for V8
25mJavaScript engines how do they even?
