Notes
-
CTAD and Deduction Guides in C++17/20
cpptemplates
How the compiler deduces class template arguments without factory functions, why explicit guides are needed, and what changed in C++20.
-
Deducing this — one get instead of four
cppcpp23templates
How C++23 collapses get overloads for the tuple protocol into one method with this Self&& and std::forward_like.
-
Deducing this instead of CRTP
cppcpp23templates
How C++23’s explicit object parameter removes Base
, static_cast, and common CRTP footguns. -
std::forward_like in C++23
cppcpp23templates
Why forward_like exists, how it differs from std::forward, the behaviour matrix, and a conceptual implementation.
-
Structured binding for a custom class — tuple protocol
cpptemplatescpp17
Specialize std::tuple_size, std::tuple_element, and get
so auto [a, b] works with a type that has private members. -
Structured binding — the hidden variable and traps
cpptypescpp17
How the compiler expands auto [a, b], why decltype(a) is not a reference, and where dangling or “shallow” const shows up.
-
Type deduction after C++14 — what was added
cpptypestemplates
Meyers’ claim about type deduction still holds in C++20/23; there are more contexts, not fewer.
-
C++ type deduction — three pillars
cpptypestemplates
Template type deduction, auto, decltype, and decltype(auto)