access-control
- How to use a private member from outside the class (2020-12-03) metaprogramming templates
- How different compilers deal with provably unused entities (2020-12-02) compiler-diagnostics implementation-divergence llvm proposal sufficiently-smart-compiler
- Ways C++ prevents you from doing X (2020-03-17) c++-learner-track pitfalls
-
Implementation divergence with
friend
(2019-09-10) classical-polymorphism implementation-divergence metaprogramming
adventure
- Observations on Castlequest’s code (2021-03-21)
- Playing Castlequest (1980), Part 2 (2021-03-20)
- Playing Castlequest (1980), Part 1 (2021-03-19)
- Making Castlequest compilable (2021-03-11)
- Castlequest exhumed! (2021-03-09)
- Adventure 448 (SWEN0448): All the easter eggs (2021-02-27)
- What are X-macros? (2021-02-01) c++-learner-track hyperrogue preprocessor
- Solo-player rules for Colossal Cave: The Board Game (2020-10-02) board-games
- Decompiling GOET0580 (2020-06-30) esolang
- A bug in Adventure’s endgame (2020-02-06) knuth war-stories
- Dealing with Dragons (2019-06-09) litclub
- Colossal Cave Adventure: open world challenge (2019-01-28) puzzles web
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) celebration-of-mind knuth litclub math puzzles web
- Happy birthday, Don Woods (2018-04-30) board-games knuth
allocators
- The post-Cologne mailing is out (2019-08-18) copy-elision coroutines rant wg21
-
Contra P0339 “
polymorphic_allocator<>
as a vocabulary type” (2019-07-02) class-template-argument-deduction library-design proposal rant wg21 -
What does the Standard mean by “
_traits
”? (2018-07-14) customization-points library-design metaprogramming templates wg21 - My C++Now 2018 talks are captioned (2018-06-13) conferences cppnow relocatability
-
Pointer to raw memory?
T*
. (2018-06-08) c++-style library-design rant standard-library-trivia -
<memory_resource>
for libc++ (2018-06-05) library-design llvm - My C++Now 2018 talks are up (2018-06-04) conferences cppnow relocatability
antipatterns
- The “array size constant” antipattern (2020-08-06) c++-style
- The “OO” Antipattern (2020-05-28) blog-roundup c++-learner-track c++-style slogans war-stories
-
Pitfalls and decision points in implementing
const_iterator
(2018-12-01) c++-style constructors library-design metaprogramming pitfalls stl-classic -
The “
unsigned
for value range” antipattern (2018-03-13) c++-style rant undefined-behavior
argument-dependent-lookup
- How do C++ using-directives work? (2020-12-21) c++-learner-track name-lookup namespaces
- An example of the Barton–Nackman trick (2020-12-09) slack stl-classic templates
-
What is the
std::swap
two-step? (2020-07-11) c++-learner-track library-design wg21-folkloristics - ADL can interfere even with uglified names (2019-09-26) pitfalls standard-library-trivia
- What is ADL? (2019-04-26) c++-learner-track wg21-folkloristics
-
How
hana::type<T>
“disables ADL” (2019-04-09) standard-library-trivia - ADL insanity (2019-04-08)
- WG21: Avoid creating ADL situations on functions with semi-common names (2018-11-04) customization-points pitfalls proposal san-diego-2018 wg21
- Fixing ADL, Round 2 (2018-08-14) llvm proposal
- Field-testing Herb Sutter’s Modest Proposal to Fix ADL (2018-08-13) compiler-diagnostics llvm pitfalls proposal
- Avoid ADL calls to functions with common names (2018-06-17) customization-points hyperrogue pitfalls war-stories
- Customization point design for library functions (2018-03-19) customization-points library-design memes templates
attributes
-
nodiscard
philosophies (2019-01-25) compiler-diagnostics library-design - Callee-destroy versus caller-destroy parameter lifetimes (2018-11-12) copy-elision pitfalls
- The Ignorable Attributes Rule (2018-05-15) language-design wg21-folkloristics
-
[[trivial_abi]]
101 (2018-05-02) copy-elision llvm sg14
blog-roundup
- Blog roundup: Auftragstaktik, files, lesser-known cryptocurrencies (2021-02-13) concepts etymology jokes templates
- Thoughts on “Does GPT-2 Know Your Phone Number?” (2020-12-27) morality science
- The Box of Delights (2020-12-27) litclub weird-fiction
- Site reliability engineering at Ardeer; eyewitnesses to Hiroshima (2020-10-17) old-shit sre
- Conway’s Soldiers (2020-10-17) puzzles
- Grab bag (2020-10-12) slack us-politics
- September blog roundup (2020-09-26)
- What I’m reading lately: ACOUP, Kitbashed, the Atlantic (2020-07-06) litclub morality movies us-politics
- The “OO” Antipattern (2020-05-28) antipatterns c++-learner-track c++-style slogans war-stories
-
Folding over
operator=
(2020-05-07) order-of-evaluation variadic-templates - The Tau Manifesto (2020-03-14) math paradigm-shift
- “Myths about /dev/urandom” and “What Is JavaScript Made Of?” (2020-02-09)
- De Canibus Britannicis (2019-12-17) etymology litclub memes old-shit
- Sorrows and So You Want to Be a Wizard (2019-11-30) litclub
- What I’m reading lately (2019-07-19) litclub morality old-shit sre
- C++Now video tidbits (2019-07-02) cppnow
- Fork considered harmful; paint splatters considered Perl (2019-04-13) paradigm-shift
- Contra CTAD (2018-12-09) class-template-argument-deduction compiler-diagnostics llvm pitfalls
- “Counterfactual mugging” a.k.a. “charity” (2018-11-19) litclub morality us-politics
- Quantum Computing for the Determined (2018-08-05) math science
- If English was written like Chinese (2018-07-13) typography
- Portia’s Caskets, Explained (2018-07-06) jokes math puzzles
- Broken Koans (2018-06-30) litclub
- Superconstructing super elider, round 2 (2018-05-17) copy-elision move-semantics today-i-learned
- Puzzle: Policing Squaresville (2018-05-10) math puzzles
- Chinese fonts, and METAFONT (2018-04-15) esolang knuth typography
- Async/await, and coloring schemes in general (2018-03-16) coroutines exception-handling language-design paradigm-shift
board-games
- Antisocial Homeworlds, and a solitaire challenge (2021-04-04) puzzles
- Homeworlds: Analysis of an Opening Gambit (2021-02-21)
- Homeworlds Puzzle: Mercury in Retrograde (2020-10-28) puzzles
- Homeworlds Puzzle: Burnt Umber (2020-10-25) puzzles
- Thoughts on OEIS A125508 (2020-10-18) celebration-of-mind math puzzles web
- Solo-player rules for Colossal Cave: The Board Game (2020-10-02) adventure
- Phantoms vs Phantoms (Geister) (2020-08-22) web
- Homeworlds Puzzle: The Prestige (2020-06-16) puzzles
- Homeworlds Puzzle: War Games (2020-05-30) puzzles
- Homeworlds Puzzle: Mini Doomsday Machine (2020-05-29) puzzles web
- Connect Fifteen (2020-05-03)
- The Knightmare of Initialization in C++ (2019-02-18) constructors language-design rant
- Homeworlds: The Yellowbird Mistake, Part II (2018-09-15)
- Homeworlds: The Yellowbird Mistake (2018-09-10)
- Happy birthday, Don Woods (2018-04-30) adventure knuth
- Hanabi set-packing puzzle (2018-04-09) math puzzles
- Hat-game strategies in Hanabi (2018-03-29)
c++-learner-track
-
static constexpr unsigned long
is C++’s “lovely little old French whittling knife” (2021-04-03) c++-style -
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) compile-time-performance move-semantics pitfalls - What are X-macros? (2021-02-01) adventure hyperrogue preprocessor
- It’s not always obvious when tail-call optimization is allowed (2021-01-09) implementation-divergence
- How do C++ using-directives work? (2020-12-21) argument-dependent-lookup name-lookup namespaces
- Arrays aren’t pointers (2020-11-25) memes typography
-
Why do I get a linker error with
static const
andvalue_or
? (2020-09-19) cppcon pitfalls war-stories -
What is the
std::swap
two-step? (2020-07-11) argument-dependent-lookup library-design wg21-folkloristics - How to erase from an STL container (2020-07-08) library-design rant standard-library-trivia stl-classic
- The “OO” Antipattern (2020-05-28) antipatterns blog-roundup c++-style slogans war-stories
- Default function arguments are the devil (2020-04-18) c++-style language-design library-design rant slogans
-
When is
*x
also&x
? (2020-03-31) slogans - Ways C++ prevents you from doing X (2020-03-17) access-control pitfalls
- Namespaces are for preventing name collisions (2020-01-07) c++-style modules slogans
- A C++ acronym glossary (2019-08-02) slack wg21-folkloristics
- What is ADL? (2019-04-26) argument-dependent-lookup wg21-folkloristics
- What is Type Erasure? (2019-03-18) library-design metaprogramming type-erasure
- Value category is not lifetime (2019-03-11) library-design metaprogramming parameter-only-types pitfalls slogans
-
const
is a contract (2019-01-03) c++-style move-semantics slogans
c++-style
-
static constexpr unsigned long
is C++’s “lovely little old French whittling knife” (2021-04-03) c++-learner-track -
Tips re
operator()
(2020-12-12) lambdas metaprogramming rant - A very short war story on too much overloading (2020-10-11) war-stories
- Inheritance is for sharing an interface (and so is overloading) (2020-10-09) classical-polymorphism metaprogramming templates
- Two musings on the design of compiler warnings (2020-09-02) compiler-diagnostics language-design rant
-
-Wrange-loop-bind-reference
andauto&&
(2020-08-26) compiler-diagnostics lifetime-extension llvm - The “array size constant” antipattern (2020-08-06) antipatterns
- An obvious guideline on function-call style (2020-07-23)
- The “OO” Antipattern (2020-05-28) antipatterns blog-roundup c++-learner-track slogans war-stories
- Default function arguments are the devil (2020-04-18) c++-learner-track language-design library-design rant slogans
-
c_str
-correctness (2020-03-20) parameter-only-types -
How to replace
__FILE__
withsource_location
in a logging macro (2020-02-12) pearls preprocessor - Namespaces are for preventing name collisions (2020-01-07) c++-learner-track modules slogans
-
const
is a contract (2019-01-03) c++-learner-track move-semantics slogans -
for (auto&& elt : range)
Still Always Works (2018-12-27) ranges -
for (auto&& elt : range)
Always Works (2018-12-15) - Don’t inherit from standard types (2018-12-11) class-template-argument-deduction library-design pitfalls slogans
-
Don’t put
-Weverything
in your build flags (2018-12-06) compiler-diagnostics llvm -
Pitfalls and decision points in implementing
const_iterator
(2018-12-01) antipatterns constructors library-design metaprogramming pitfalls stl-classic -
An argument pro liberal use of
[[nodiscard]]
(2018-11-06) pitfalls - C++2a idioms for library feature detection (2018-10-26)
- Concepts as door-opening robots (2018-09-24) concepts cppcon paradigm-shift
- Data race when catching by non-const reference (2018-09-16) copy-elision exception-handling
-
The
Auto
macro (2018-08-11) memes pearls preprocessor -
The
FORCE_CONSTEXPR
macro (2018-08-07) preprocessor sufficiently-smart-compiler - The Fundamental Theorem of Software Engineering (2018-06-18) memes
-
Pointer to raw memory?
T*
. (2018-06-08) allocators library-design rant standard-library-trivia -
In praise of
make_unique
(2018-05-26) standard-library-trivia - Hiding template parameters from casual users (2018-05-09) templates
- Embedding quotes in strings (2018-04-27) pearls war-stories
- The Lakos Rule (2018-04-25) contracts undefined-behavior wg21-folkloristics
-
On lifetime extension and
decltype(auto)
(2018-04-05) lifetime-extension move-semantics - Borrow types, Round 2 (2018-03-28) paradigm-shift parameter-only-types
-
std::string_view
is a borrow type (2018-03-27) lifetime-extension paradigm-shift parameter-only-types pitfalls - Zoological case naming (2018-03-16) memes naming
-
Using
future_error
for control flow (2018-03-13) exception-handling -
The “
unsigned
for value range” antipattern (2018-03-13) antipatterns rant undefined-behavior
celebration-of-mind
- Lineup for next week’s Celebration of Mind (2021-04-15) conferences math
- Thoughts on OEIS A125508 (2020-10-18) board-games math puzzles web
- Scott Kim’s rotational ambigrams for the Celebration of Mind (2020-10-18) math typography web
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) adventure knuth litclub math puzzles web
cellular-automata
- The Star Wars cellular automaton (2020-06-29) esolang web
- A cellular automaton that makes beautiful little patterns (2019-07-27) esolang math web
class-template-argument-deduction
-
Holiday fun with
template<class>
andtemplate<typename>
(2019-12-27) implementation-divergence rant templates -
Contra P0339 “
polymorphic_allocator<>
as a vocabulary type” (2019-07-02) allocators library-design proposal rant wg21 - Measuring adoption of C++17 and CTAD in real codebases (2019-01-16) llvm science
- Don’t inherit from standard types (2018-12-11) c++-style library-design pitfalls slogans
- Contra CTAD (2018-12-09) blog-roundup compiler-diagnostics llvm pitfalls
classical-polymorphism
-
A hole in Clang’s
-Wsuggest-override
(2021-02-19) compiler-diagnostics llvm - When can the C++ compiler devirtualize a call? (2021-02-15) implementation-divergence sufficiently-smart-compiler
- “Flash of unstyled base class” (2020-12-09) concurrency pitfalls war-stories
- A case study in implementation inheritance (2020-10-15) war-stories
- Inheritance is for sharing an interface (and so is overloading) (2020-10-09) c++-style metaprogramming templates
-
Classically polymorphic
visit
replaces some uses ofdynamic_cast
(2020-09-29) metaprogramming templates variadic-templates war-stories - Setup and teardown routines in non-flat class hierarchies (2019-12-03) rant slack
- What is the virtual table table? (2019-09-30) constructors
-
Implementation divergence with
friend
(2019-09-10) access-control implementation-divergence metaprogramming -
Remember the
ifstream
(2018-11-26) concepts library-design pitfalls
compile-time-performance
-
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) c++-learner-track move-semantics pitfalls -
37 percent of HyperRogue’s compilation time is due to
std::function
(2019-01-06) hyperrogue sg14 type-erasure war-stories - Template metaprogramming: Iteration is better than recursion (2018-07-23) metaprogramming templates variadic-templates
- SCARY metafunctions (2018-07-09) library-design metaprogramming
- The surprisingly high cost of static-lifetime constructors (2018-06-26) hyperrogue initializer-list pitfalls war-stories
compiler-diagnostics
-
C’s removal of
gets
could have been done better (2021-03-12) war-stories -
A hole in Clang’s
-Wsuggest-override
(2021-02-19) classical-polymorphism llvm - How different compilers deal with provably unused entities (2020-12-02) access-control implementation-divergence llvm proposal sufficiently-smart-compiler
- Two musings on the design of compiler warnings (2020-09-02) c++-style language-design rant
-
-Wrange-loop-bind-reference
andauto&&
(2020-08-26) c++-style lifetime-extension llvm -
nodiscard
philosophies (2019-01-25) attributes library-design - Contra CTAD (2018-12-09) blog-roundup class-template-argument-deduction llvm pitfalls
-
Don’t put
-Weverything
in your build flags (2018-12-06) c++-style llvm - Field-testing Herb Sutter’s Modest Proposal to Fix ADL (2018-08-13) argument-dependent-lookup llvm pitfalls proposal
-
Attribute
noexcept_verify
(2018-06-12) exception-handling proposal - A modest proposal for a GCC diagnostic (2018-04-09) memes pitfalls this-should-exist
concepts
- Blog roundup: Auftragstaktik, files, lesser-known cryptocurrencies (2021-02-13) blog-roundup etymology jokes templates
-
decltype
of a non-static member (2021-02-10) implementation-divergence name-lookup -
SFINAE and
E1.E2
(2020-11-01) implementation-divergence templates - Concepts can’t do quantifiers (2020-08-10)
- SFINAE special members or support incomplete types: Pick at most one (2020-02-05) implementation-divergence library-design metaprogramming standard-library-trivia templates
- Seen on the CppCon whiteboard (2019-09-18) conferences cppcon slack
- Concept definition-checking and its woes (2019-07-22)
-
Announcing
Quuxplusone/coro
, single-header C++2a example code (2019-07-03) coroutines ranges web - P1616R0 and health insurance (2019-07-03) implementation-divergence metaprogramming templates wg21
- This one weird trick for customization by class template (partial) specialization (2019-04-26) customization-points library-design metaprogramming
- Hot takes on P1452, P1470, P0408, and P0843 (2019-02-03) kona-2019 library-design rant wg21
- Covariance and contravariance in C++ (2019-01-20) implementation-divergence metaprogramming templates variadic-templates
-
requires
-expression grammar trivia (2019-01-17) language-design rant -
Why do we require
requires requires
? (2019-01-15) - Should foo be move-only? (2019-01-02) library-design move-semantics type-erasure
-
Remember the
ifstream
(2018-11-26) classical-polymorphism library-design pitfalls - Concepts as door-opening robots (2018-09-24) c++-style cppcon paradigm-shift
- A simpler SUBSUMES() macro (2018-09-23) metaprogramming preprocessor rant
- A use-case for member concepts and/or template concept parameters (2018-09-17) preprocessor rant
- Constrained forwarding references considered sketchy as frick (2018-09-09) metaprogramming pitfalls
- The big problems for C++11 SFINAE (2018-09-08) metaprogramming rant
- Stopping the cascade of errors (2018-08-23) metaprogramming pearls templates
- Comparison categories for narrow-contract comparators (2018-08-07) contracts operator-spaceship undefined-behavior
- Thoughts on “sanely move-assignable” (2018-07-06) relocatability
- Thoughts on Concepts, P0745, and P1079 (2018-05-28) wg21
- A pro-default-constructibility experiment from 2007 (2018-05-10) constructors rant science
- Default-constructibility is overrated (2018-05-10) constructors naming rant templates wg21
concurrency
- “Flash of unstyled base class” (2020-12-09) classical-polymorphism pitfalls war-stories
-
std::once_flag
is a glass hill (2020-10-23) cppcon litclub standard-library-trivia - Why doesn’t C++ have networking support? (2019-10-09) library-design wg21
- “Understanding Real-World Concurrency Bugs in Go” (2019-06-06) rant science
- Contra locales (2018-04-30) library-design
conferences
- Lineup for next week’s Celebration of Mind (2021-04-15) celebration-of-mind math
- C++ Pub Quiz at CppCon 2020, Game Two (2020-09-18) cppcon
- C++ Pub Quiz at CppCon 2020 (2020-09-16) cppcon
- “Classic STL” at CppCon 2020 (2020-09-12) cppcon stl-classic training
- Back to Basics at CppCon 2020 (2020-08-11) cppcon
- C++ Pub Quiz at CppCon 2019 (2019-09-21) cppcon
- Seen on the CppCon whiteboard (2019-09-18) concepts cppcon slack
- Back to Basics at CppCon 2019 (2019-09-12) cppcon
- My C++Now 2019 talks are captioned (2019-06-25) cppnow relocatability
- “The STL From Scratch” is back! (2019-06-21) cppcon
- Trivially Relocatable versus Destructive Movable (2018-09-28) cppcon relocatability
- CppCon 2018 Early Bird Registration closes on July 7th (2018-07-02) cppcon
- My C++Now 2018 talks are captioned (2018-06-13) allocators cppnow relocatability
- My C++Now 2018 talks are up (2018-06-04) allocators cppnow relocatability
constructors
- What is the virtual table table? (2019-09-30) classical-polymorphism
- The Knightmare of Initialization in C++ (2019-02-18) board-games language-design rant
-
Pitfalls and decision points in implementing
const_iterator
(2018-12-01) antipatterns c++-style library-design metaprogramming pitfalls stl-classic - Is your constructor an object-factory or a type-conversion? (2018-06-21) library-design rant
- A pro-default-constructibility experiment from 2007 (2018-05-10) concepts rant science
- Default-constructibility is overrated (2018-05-10) concepts naming rant templates wg21
contracts
- Comparison categories for narrow-contract comparators (2018-08-07) concepts operator-spaceship undefined-behavior
- The Lakos Rule (2018-04-25) c++-style undefined-behavior wg21-folkloristics
copy-elision
- Escape analysis hates copy elision (2021-03-07) implicit-move pitfalls proposal slack
- Field-testing “Down with lifetime extension!” (2020-03-04) initializer-list lifetime-extension llvm proposal
- Thoughts on “The C++ Rvalue Lifetime Disaster” (2020-03-04) move-semantics paradigm-shift
- The post-Cologne mailing is out (2019-08-18) allocators coroutines rant wg21
- Callee-destroy versus caller-destroy parameter lifetimes (2018-11-12) attributes pitfalls
- “Perfect backwarding” (2018-09-25) metaprogramming
- Data race when catching by non-const reference (2018-09-16) c++-style exception-handling
- Superconstructing super elider, round 2 (2018-05-17) blog-roundup move-semantics today-i-learned
-
[[trivial_abi]]
101 (2018-05-02) attributes llvm sg14 - Copy Elision in Throw Statements (2018-04-09) exception-handling move-semantics sufficiently-smart-compiler
- The Superconstructing Super Elider (2018-03-29) move-semantics proposal sufficiently-smart-compiler
coroutines
-
Precedence of a proposed
|>
operator (2020-04-10) language-design proposal ranges wg21 - The post-Cologne mailing is out (2019-08-18) allocators copy-elision rant wg21
- C++2a Coroutines and dangling references (2019-07-10) parameter-only-types pitfalls
-
Announcing
Quuxplusone/coro
, single-header C++2a example code (2019-07-03) concepts ranges web - In support of P1485 “Better keywords for coroutines” (2019-06-26) proposal wg21
- Four versions of Eric’s Famous Pythagorean Triples Code (2019-03-06) metaprogramming ranges sufficiently-smart-compiler
- Async/await, and coloring schemes in general (2018-03-16) blog-roundup exception-handling language-design paradigm-shift
-
On
raise
versusthrow
, and the Mandela Effect (2018-03-14) exception-handling
cppcon
-
The STL is more than
std::accumulate
(2020-12-14) memes ranges rant stl-classic -
std::once_flag
is a glass hill (2020-10-23) concurrency litclub standard-library-trivia -
Why do I get a linker error with
static const
andvalue_or
? (2020-09-19) c++-learner-track pitfalls war-stories - C++ Pub Quiz at CppCon 2020, Game Two (2020-09-18) conferences
- C++ Pub Quiz at CppCon 2020 (2020-09-16) conferences
- “Classic STL” at CppCon 2020 (2020-09-12) conferences stl-classic training
- Back to Basics at CppCon 2020 (2020-08-11) conferences
- The Design of Everyday Things (2020-03-07) litclub sre
- CppCon 2019 talks are up (2019-10-18) slogans
- Thoughts on Herb Sutter’s CppCon keynote (2019-09-24) exception-handling
-
A trivially copyable ticket for a
unique_ptr
(2019-09-21) parameter-only-types relocatability - C++ Pub Quiz at CppCon 2019 (2019-09-21) conferences
- Seen on the CppCon whiteboard (2019-09-18) concepts conferences slack
- Back to Basics at CppCon 2019 (2019-09-12) conferences
- “The STL From Scratch” is back! (2019-06-21) conferences
- Trivially Relocatable versus Destructive Movable (2018-09-28) conferences relocatability
- Concepts as door-opening robots (2018-09-24) c++-style concepts paradigm-shift
- CppCon 2018 Early Bird Registration closes on July 7th (2018-07-02) conferences
cppnow
- C++Now 2020: A C++ Magic Trick (2020-05-04) parameter-only-types web
- C++Now video tidbits (2019-07-02) blog-roundup
- My C++Now 2019 talks are captioned (2019-06-25) conferences relocatability
-
MapView
can be faster thanMapRef
(2019-05-27) library-design parameter-only-types - MSVC can’t handle move-only exception types (2019-05-11) exception-handling pitfalls relocatability
-
On
function_ref
andstring_view
(2019-05-10) library-design pitfalls - My C++Now 2018 talks are captioned (2018-06-13) allocators conferences relocatability
- My C++Now 2018 talks are up (2018-06-04) allocators conferences relocatability
- The C++Now 2018 schedule is out (2018-03-19)
customization-points
- This one weird trick for customization by class template (partial) specialization (2019-04-26) concepts library-design metaprogramming
- WG21: Avoid creating ADL situations on functions with semi-common names (2018-11-04) argument-dependent-lookup pitfalls proposal san-diego-2018 wg21
- C++ doesn’t know how to do customization points that aren’t operators (2018-08-23) operator-spaceship rant
-
What does the Standard mean by “
_traits
”? (2018-07-14) allocators library-design metaprogramming templates wg21 - Avoid ADL calls to functions with common names (2018-06-17) argument-dependent-lookup hyperrogue pitfalls war-stories
- Customization point design for library functions (2018-03-19) argument-dependent-lookup library-design memes templates
esolang
- A better 404 polyglot (2020-12-23)
- Decompiling GOET0580 (2020-06-30) adventure
- The Star Wars cellular automaton (2020-06-29) cellular-automata web
- Two approaches to secret sharing: math vs. blockchain (2020-02-12) math pearls
- The Story of Mel (2020-01-05) litclub war-stories
- Church booleans in Befunge-98 (2019-08-24)
- A cellular automaton that makes beautiful little patterns (2019-07-27) cellular-automata math web
- Befunge and Flobnar (2019-05-02)
- Chinese fonts, and METAFONT (2018-04-15) blog-roundup knuth typography
etymology
- Blog roundup: Auftragstaktik, files, lesser-known cryptocurrencies (2021-02-13) blog-roundup concepts jokes templates
- What I’m reading lately: The Ring of Words (2020-08-05) litclub old-shit today-i-learned
- De Canibus Britannicis (2019-12-17) blog-roundup litclub memes old-shit
- Fictional islands that are neither fictional nor islands (2018-12-16) gilbert-and-sullivan litclub today-i-learned
exception-handling
- Thoughts on Herb Sutter’s CppCon keynote (2019-09-24) cppcon
- “Exception Handling: A False Sense of Security” (2019-06-17) wg21-folkloristics
- MSVC can’t handle move-only exception types (2019-05-11) cppnow pitfalls relocatability
- Data race when catching by non-const reference (2018-09-16) c++-style copy-elision
-
Attribute
noexcept_verify
(2018-06-12) compiler-diagnostics proposal - Copy Elision in Throw Statements (2018-04-09) copy-elision move-semantics sufficiently-smart-compiler
- Async/await, and coloring schemes in general (2018-03-16) blog-roundup coroutines language-design paradigm-shift
-
On
raise
versusthrow
, and the Mandela Effect (2018-03-14) coroutines -
Using
future_error
for control flow (2018-03-13) c++-style
food
gilbert-and-sullivan
- A Parody on Iolanthe (2020-07-20) litclub old-shit today-i-learned
- Confessions of a Justified Sinner (2019-08-06) litclub morality old-shit
- Fictional islands that are neither fictional nor islands (2018-12-16) etymology litclub today-i-learned
holy-wars
how-to
- Flavors of Base64 encoding (2020-11-17) web
- MathJax v3 in Jekyll (2020-08-19) knuth web
- How to build LLVM from source, monorepo version (2019-11-09) llvm
- Hello World with C++2a modules (2019-11-07) llvm modules
- Making floppy disk images under OS X (2019-07-26) sre
- MathJax in Jekyll (2018-08-05) knuth web
- How to build LLVM from source (2018-04-16) llvm
- First post — Jekyll Now (2018-03-13) slack web
hyperrogue
- What are X-macros? (2021-02-01) adventure c++-learner-track preprocessor
-
37 percent of HyperRogue’s compilation time is due to
std::function
(2019-01-06) compile-time-performance sg14 type-erasure war-stories - shields.io (2018-06-26) sre today-i-learned web
- The surprisingly high cost of static-lifetime constructors (2018-06-26) compile-time-performance initializer-list pitfalls war-stories
- Avoid ADL calls to functions with common names (2018-06-17) argument-dependent-lookup customization-points pitfalls war-stories
implementation-divergence
-
Does
throw x
implicit-move? Let’s ask SFINAE (2021-03-18) implicit-move - When can the C++ compiler devirtualize a call? (2021-02-15) classical-polymorphism sufficiently-smart-compiler
-
decltype
of a non-static member (2021-02-10) concepts name-lookup - Fun with conversion-operator name lookup (2021-01-13) name-lookup
- It’s not always obvious when tail-call optimization is allowed (2021-01-09) c++-learner-track
- How different compilers deal with provably unused entities (2020-12-02) access-control compiler-diagnostics llvm proposal sufficiently-smart-compiler
- Lifetime extension applies to whole objects (2020-11-16) lifetime-extension parameter-only-types
-
SFINAE and
E1.E2
(2020-11-01) concepts templates - SFINAE special members or support incomplete types: Pick at most one (2020-02-05) concepts library-design metaprogramming standard-library-trivia templates
- A quirk of qualified member lookup (2020-01-11) language-design name-lookup slack templates today-i-learned
-
Holiday fun with
template<class>
andtemplate<typename>
(2019-12-27) class-template-argument-deduction rant templates -
Implementation divergence with
const int i;
andmutable
(2019-12-04) -
Implementation divergence with
friend
(2019-09-10) access-control classical-polymorphism metaprogramming - P1616R0 and health insurance (2019-07-03) concepts metaprogramming templates wg21
-
Is
__int128
integral? A survey (2019-02-28) standard-library-trivia -
What library types are
trivially_relocatable
in practice? (2019-02-20) kona-2019 relocatability - Covariance and contravariance in C++ (2019-01-20) concepts metaprogramming templates variadic-templates
-
operator auto
(2018-07-12) metaprogramming proposal rant today-i-learned - Contra built-in library types (2018-04-15) language-design operator-spaceship rant
implicit-move
-
Does
throw x
implicit-move? Let’s ask SFINAE (2021-03-18) implementation-divergence - Escape analysis hates copy elision (2021-03-07) copy-elision pitfalls proposal slack
initializer-list
- Field-testing “Down with lifetime extension!” (2020-03-04) copy-elision lifetime-extension llvm proposal
- The surprisingly high cost of static-lifetime constructors (2018-06-26) compile-time-performance hyperrogue pitfalls war-stories
jacksonville-2018
- Namespaces for UDLs (2018-03-21) proposal wg21
- P0732R0 and “trivially comparable” (2018-03-19) language-design naming operator-spaceship templates wg21
- Hot take: P0947R0 “Another take on Modules” (2018-03-14) language-design modules rant wg21
jokes
- Blog roundup: Auftragstaktik, files, lesser-known cryptocurrencies (2021-02-13) blog-roundup concepts etymology templates
- The Case of Willie the Wisp (2020-05-29) litclub
- Hello Muddah, Hello Faddah (Coronavirus Version) (2020-04-08) memes music
- The blow-up problem (2019-01-14) science
- Godspell and Max Havelaar (2018-07-23) morality movies old-shit
- Portia’s Caskets, Explained (2018-07-06) blog-roundup math puzzles
knuth
- Bubblesort, rocksort, and cocktail-shaker sort (2020-12-13) math
- MathJax v3 in Jekyll (2020-08-19) how-to web
- A bug in Adventure’s endgame (2020-02-06) adventure war-stories
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) adventure celebration-of-mind litclub math puzzles web
- MathJax in Jekyll (2018-08-05) how-to web
- Happy birthday, Don Woods (2018-04-30) adventure board-games
- Chinese fonts, and METAFONT (2018-04-15) blog-roundup esolang typography
kona-2019
- How my papers did at Kona (2019-03-20) operator-spaceship relocatability wg21
- Thoughts on P1306 “Expansion Statements” (2019-02-28) language-design metaprogramming
- Fetishizing class invariants (2019-02-24) library-design metaprogramming standard-library-trivia
- Not variadic expression templates (2019-02-23) metaprogramming pitfalls variadic-templates
-
P1144 case study: Moving a
fixed_capacity_vector
(2019-02-22) relocatability sg14 -
What library types are
trivially_relocatable
in practice? (2019-02-20) implementation-divergence relocatability -
Quick and unscientific
trivially_relocatable
benchmark (2019-02-12) relocatability - Packs of packs (2019-02-11) language-design metaprogramming
- Hot takes on P1452, P1470, P0408, and P0843 (2019-02-03) concepts library-design rant wg21
-
Contra P0429R6
flat_map
(2019-01-29) library-design sg14 wg21 -
Hot takes on
flat_map
,resize_default_init
, andranges::to
(2019-01-28) rant wg21
lambdas
language-design
-
while (auto x=y; z)
(2020-10-28) slack - Two musings on the design of compiler warnings (2020-09-02) c++-style compiler-diagnostics rant
- Default function arguments are the devil (2020-04-18) c++-learner-track c++-style library-design rant slogans
-
Precedence of a proposed
|>
operator (2020-04-10) coroutines proposal ranges wg21 - A quirk of qualified member lookup (2020-01-11) implementation-divergence name-lookup slack templates today-i-learned
- Thoughts on P1306 “Expansion Statements” (2019-02-28) kona-2019 metaprogramming
- The Knightmare of Initialization in C++ (2019-02-18) board-games constructors rant
- Packs of packs (2019-02-11) kona-2019 metaprogramming
-
requires
-expression grammar trivia (2019-01-17) concepts rant - Perennial impossibilities of C++ (2018-06-12)
- Contra implicit declarations of struct types (2018-05-16) pitfalls rant
- The Ignorable Attributes Rule (2018-05-15) attributes wg21-folkloristics
- Contra built-in library types (2018-04-15) implementation-divergence operator-spaceship rant
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 naming operator-spaceship templates wg21
- Async/await, and coloring schemes in general (2018-03-16) blog-roundup coroutines exception-handling paradigm-shift
- Hot take: P0947R0 “Another take on Modules” (2018-03-14) jacksonville-2018 modules rant wg21
library-design
-
What is the
std::swap
two-step? (2020-07-11) argument-dependent-lookup c++-learner-track wg21-folkloristics - How to erase from an STL container (2020-07-08) c++-learner-track rant standard-library-trivia stl-classic
- Default function arguments are the devil (2020-04-18) c++-learner-track c++-style language-design rant slogans
- SFINAE special members or support incomplete types: Pick at most one (2020-02-05) concepts implementation-divergence metaprogramming standard-library-trivia templates
- OpenSSL client and server from scratch, part 5 (2020-01-28) networking web
- OpenSSL client and server from scratch, part 4 (2020-01-27) networking
- OpenSSL client and server from scratch, part 3 (2020-01-26) networking
- OpenSSL client and server from scratch, part 2 (2020-01-25) networking
- OpenSSL client and server from scratch, part 1 (2020-01-24) networking
- An unexpected brush with “strong typedefs” (2019-10-10) parameter-only-types standard-library-trivia
- Why doesn’t C++ have networking support? (2019-10-09) concurrency wg21
-
Contra P0339 “
polymorphic_allocator<>
as a vocabulary type” (2019-07-02) allocators class-template-argument-deduction proposal rant wg21 -
MapView
can be faster thanMapRef
(2019-05-27) cppnow parameter-only-types -
On
function_ref
andstring_view
(2019-05-10) cppnow pitfalls - This one weird trick for customization by class template (partial) specialization (2019-04-26) concepts customization-points metaprogramming
-
The space of design choices for
std::function
(2019-03-27) parameter-only-types type-erasure - What is Type Erasure? (2019-03-18) c++-learner-track metaprogramming type-erasure
- Value category is not lifetime (2019-03-11) c++-learner-track metaprogramming parameter-only-types pitfalls slogans
- Fetishizing class invariants (2019-02-24) kona-2019 metaprogramming standard-library-trivia
-
compressed_vector_traits
(2019-02-16) metaprogramming -
C++ idiom of the day:
arrow_proxy
(2019-02-06) metaprogramming pearls - Hot takes on P1452, P1470, P0408, and P0843 (2019-02-03) concepts kona-2019 rant wg21
-
Contra P0429R6
flat_map
(2019-01-29) kona-2019 sg14 wg21 -
nodiscard
philosophies (2019-01-25) attributes compiler-diagnostics - Should foo be move-only? (2019-01-02) concepts move-semantics type-erasure
- Don’t inherit from standard types (2018-12-11) c++-style class-template-argument-deduction pitfalls slogans
-
Pitfalls and decision points in implementing
const_iterator
(2018-12-01) antipatterns c++-style constructors metaprogramming pitfalls stl-classic -
Remember the
ifstream
(2018-11-26) classical-polymorphism concepts pitfalls -
Case study: Making
std::any
trivially relocatable (2018-08-02) relocatability -
What does the Standard mean by “
_traits
”? (2018-07-14) allocators customization-points metaprogramming templates wg21 - SCARY metafunctions (2018-07-09) compile-time-performance metaprogramming
- Is your constructor an object-factory or a type-conversion? (2018-06-21) constructors rant
-
inplace_foo
versusfixed_capacity_foo
(2018-06-18) naming sg14 -
Pointer to raw memory?
T*
. (2018-06-08) allocators c++-style rant standard-library-trivia -
<memory_resource>
for libc++ (2018-06-05) allocators llvm - Reference types with metadata cause problems (2018-05-30) parameter-only-types pitfalls sg14 wg21
- Contra locales (2018-04-30) concurrency
-
std::priority_queue
is missing an operation (2018-04-27) proposal - Customization point design for library functions (2018-03-19) argument-dependent-lookup customization-points memes templates
lifetime-extension
- Lifetime extension applies to whole objects (2020-11-16) implementation-divergence parameter-only-types
-
-Wrange-loop-bind-reference
andauto&&
(2020-08-26) c++-style compiler-diagnostics llvm - Field-testing “Down with lifetime extension!” (2020-03-04) copy-elision initializer-list llvm proposal
-
On lifetime extension and
decltype(auto)
(2018-04-05) c++-style move-semantics -
std::string_view
is a borrow type (2018-03-27) c++-style paradigm-shift parameter-only-types pitfalls
litclub
- The Box of Delights (2020-12-27) blog-roundup weird-fiction
- Colonel Blimp and An Inspector Calls (2020-11-01) morality movies old-shit
-
std::once_flag
is a glass hill (2020-10-23) concurrency cppcon standard-library-trivia - What I’m reading lately: New York, The Atlantic, The Three-Body Problem (2020-08-15) morality us-politics
- What I’m reading lately: The Ring of Words (2020-08-05) etymology old-shit today-i-learned
- A Parody on Iolanthe (2020-07-20) gilbert-and-sullivan old-shit today-i-learned
- What I’m reading lately: ACOUP, Kitbashed, the Atlantic (2020-07-06) blog-roundup morality movies us-politics
- Lovecraft on Hitler (2020-06-09) us-politics weird-fiction
- The Case of Willie the Wisp (2020-05-29) jokes
- What I’m reading lately: The Compleat Boucher (2020-04-05) morality old-shit sre
- Discrete Peaceful Encampments, Bernie Sanders version (2020-03-21) math morality puzzles us-politics
- The Design of Everyday Things (2020-03-07) cppcon sre
- The Story of Mel (2020-01-05) esolang war-stories
- De Canibus Britannicis (2019-12-17) blog-roundup etymology memes old-shit
- Sorrows and So You Want to Be a Wizard (2019-11-30) blog-roundup
- Transcription of All Of Them Witches (2019-08-26) movies old-shit
- Confessions of a Justified Sinner (2019-08-06) gilbert-and-sullivan morality old-shit
- What I’m reading lately (2019-07-19) blog-roundup morality old-shit sre
- Dealing with Dragons (2019-06-09) adventure
- Les Fleurs de Tarbes (2019-01-14) sre
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) adventure celebration-of-mind knuth math puzzles web
- Booth on Cassio (2019-01-05)
- Against the Grain: Contraception, abortion, and slow death (2018-12-26) morality
- Against the Grain: Pitcher plant (2018-12-25) movies
- Fictional islands that are neither fictional nor islands (2018-12-16) etymology gilbert-and-sullivan today-i-learned
- “Counterfactual mugging” a.k.a. “charity” (2018-11-19) blog-roundup morality us-politics
- The Mysteries of London (2018-09-05) old-shit us-politics
- The Three Impostors: Four-ale and six-ale (2018-07-26) old-shit today-i-learned weird-fiction
- Renowned author Dan Brown; London’s Gold-Mines (2018-07-10) old-shit
- Broken Koans (2018-06-30) blog-roundup
- Madame Scarron (2018-06-22) old-shit
- “We were defeated by one thing only—” (2018-06-22) sre
- ’Ware Wire (2018-06-20)
- Which in your case you have not got (2018-06-17) today-i-learned
- The Description of a New World, Called The Blazing-World (2018-04-05) old-shit
llvm
-
A hole in Clang’s
-Wsuggest-override
(2021-02-19) classical-polymorphism compiler-diagnostics - How different compilers deal with provably unused entities (2020-12-02) access-control compiler-diagnostics implementation-divergence proposal sufficiently-smart-compiler
-
-Wrange-loop-bind-reference
andauto&&
(2020-08-26) c++-style compiler-diagnostics lifetime-extension - Field-testing “Down with lifetime extension!” (2020-03-04) copy-elision initializer-list lifetime-extension proposal
- The abstraction penalty for wide integer math on x86-64 (2020-02-13) sufficiently-smart-compiler
- How to build LLVM from source, monorepo version (2019-11-09) how-to
- Hello World with C++2a modules (2019-11-07) how-to modules
- Measuring adoption of C++17 and CTAD in real codebases (2019-01-16) class-template-argument-deduction science
- Contra CTAD (2018-12-09) blog-roundup class-template-argument-deduction compiler-diagnostics pitfalls
-
Don’t put
-Weverything
in your build flags (2018-12-06) c++-style compiler-diagnostics - Fixing ADL, Round 2 (2018-08-14) argument-dependent-lookup proposal
- Field-testing Herb Sutter’s Modest Proposal to Fix ADL (2018-08-13) argument-dependent-lookup compiler-diagnostics pitfalls proposal
-
<memory_resource>
for libc++ (2018-06-05) allocators library-design -
[[trivial_abi]]
101 (2018-05-02) attributes copy-elision sg14 - How to build LLVM from source (2018-04-16) how-to
math
- Lineup for next week’s Celebration of Mind (2021-04-15) celebration-of-mind conferences
- Bubblesort, rocksort, and cocktail-shaker sort (2020-12-13) knuth
- Thoughts on OEIS A125508 (2020-10-18) board-games celebration-of-mind puzzles web
- Scott Kim’s rotational ambigrams for the Celebration of Mind (2020-10-18) celebration-of-mind typography web
- Discrete Peaceful Encampments, Bernie Sanders version (2020-03-21) litclub morality puzzles us-politics
- The Tau Manifesto (2020-03-14) blog-roundup paradigm-shift
- Two approaches to secret sharing: math vs. blockchain (2020-02-12) esolang pearls
- Canonicalizing {0,1}-matrices with Nauty (2020-01-11)
- Wolves and Sheep, with tables (2020-01-10) puzzles
- Discrete Peaceful Encampments, with tables (2019-10-18) puzzles
- What is 8÷2(2+2)? (2019-08-01)
- A cellular automaton that makes beautiful little patterns (2019-07-27) cellular-automata esolang web
- Prince Rupert’s Lego Cube (2019-07-23) science
- Notes on Prince Rupert’s Problem (2019-07-22) science today-i-learned
- Puzzle: Wolves and sheep (2019-04-17) puzzles
- README for my Peaceful Encampments visualizer (2019-03-18) puzzles web
- Discrete Peaceful Encampments (2019-01-24) puzzles
- Peaceful Encampments, round 2 (2019-01-21) puzzles web
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) adventure celebration-of-mind knuth litclub puzzles web
- Meta-sudoku, round 4: A valid meta-puzzle (2018-11-20) puzzles
- Meta-sudoku, round 3: D’oh! (2018-11-19) puzzles
- Meta-sudoku, round 2 (2018-11-18) puzzles
- Puzzle: Sudoku Stories (2018-10-26) puzzles
- Quantum Computing for the Determined (2018-08-05) blog-roundup science
- Portia’s Caskets, Explained (2018-07-06) blog-roundup jokes puzzles
- Puzzle: Policing Squaresville (2018-05-10) blog-roundup puzzles
- Hanabi set-packing puzzle (2018-04-09) board-games puzzles
memes
- When your loop unroller works harder than your infinite loop detector (2021-02-26) slack
-
The STL is more than
std::accumulate
(2020-12-14) cppcon ranges rant stl-classic -
Loop variable may not be declared
static
(2020-12-03) slack thread-local-storage - Arrays aren’t pointers (2020-11-25) c++-learner-track typography
- Hello Muddah, Hello Faddah (Coronavirus Version) (2020-04-08) jokes music
- De Canibus Britannicis (2019-12-17) blog-roundup etymology litclub old-shit
- Execution-agent-local storage (2018-11-14) rant thread-local-storage
- Pray-Mister-Babbage problems (2018-09-26) old-shit
-
The
Auto
macro (2018-08-11) c++-style pearls preprocessor - API design (2018-07-09) slack
- The Fundamental Theorem of Software Engineering (2018-06-18) c++-style
- A modest proposal for a GCC diagnostic (2018-04-09) compiler-diagnostics pitfalls this-should-exist
- Customization point design for library functions (2018-03-19) argument-dependent-lookup customization-points library-design templates
- Happy Saint Patrick’s Day! (2018-03-17)
- Zoological case naming (2018-03-16) c++-style naming
-
West
const
(2018-03-15) holy-wars
metaprogramming
-
Tips re
operator()
(2020-12-12) c++-style lambdas rant - How to use a private member from outside the class (2020-12-03) access-control templates
- Left-folding and right-folding an arbitrary callable (2020-10-12) slack variadic-templates
- Inheritance is for sharing an interface (and so is overloading) (2020-10-09) c++-style classical-polymorphism templates
-
Classically polymorphic
visit
replaces some uses ofdynamic_cast
(2020-09-29) classical-polymorphism templates variadic-templates war-stories - SFINAE special members or support incomplete types: Pick at most one (2020-02-05) concepts implementation-divergence library-design standard-library-trivia templates
- Comparative TMP #1: MPL, Mp11, Kvasir, Hana, Metal (2019-12-28) templates
-
Implementation divergence with
friend
(2019-09-10) access-control classical-polymorphism implementation-divergence -
Mangling dependent parameter types, or, what happened to
std::default_order
(2019-08-08) operator-spaceship pitfalls standard-library-trivia templates wg21-folkloristics -
Conditional
explicit
is not the same thing as forwardingexplicit
(2019-07-05) templates - P1616R0 and health insurance (2019-07-03) concepts implementation-divergence templates wg21
- This one weird trick for customization by class template (partial) specialization (2019-04-26) concepts customization-points library-design
- What is Type Erasure? (2019-03-18) c++-learner-track library-design type-erasure
- Value category is not lifetime (2019-03-11) c++-learner-track library-design parameter-only-types pitfalls slogans
- Four versions of Eric’s Famous Pythagorean Triples Code (2019-03-06) coroutines ranges sufficiently-smart-compiler
- Thoughts on P1306 “Expansion Statements” (2019-02-28) kona-2019 language-design
- Fetishizing class invariants (2019-02-24) kona-2019 library-design standard-library-trivia
- Not variadic expression templates (2019-02-23) kona-2019 pitfalls variadic-templates
-
compressed_vector_traits
(2019-02-16) library-design - Packs of packs (2019-02-11) kona-2019 language-design
-
C++ idiom of the day:
arrow_proxy
(2019-02-06) library-design pearls - Covariance and contravariance in C++ (2019-01-20) concepts implementation-divergence templates variadic-templates
-
Pointer comparisons with
std::less<void>
: a horror story (2019-01-20) operator-spaceship rant standard-library-trivia undefined-behavior -
Is this
std::vector
? (2019-01-17) -
Pitfalls and decision points in implementing
const_iterator
(2018-12-01) antipatterns c++-style constructors library-design pitfalls stl-classic - “Perfect backwarding” (2018-09-25) copy-elision
- A simpler SUBSUMES() macro (2018-09-23) concepts preprocessor rant
- Constrained forwarding references considered sketchy as frick (2018-09-09) concepts pitfalls
- The big problems for C++11 SFINAE (2018-09-08) concepts rant
- Stopping the cascade of errors (2018-08-23) concepts pearls templates
- Template metaprogramming: Iteration is better than recursion (2018-07-23) compile-time-performance templates variadic-templates
-
What does the Standard mean by “
_traits
”? (2018-07-14) allocators customization-points library-design templates wg21 -
operator auto
(2018-07-12) implementation-divergence proposal rant today-i-learned - SCARY metafunctions (2018-07-09) compile-time-performance library-design
modules
- Namespaces are for preventing name collisions (2020-01-07) c++-learner-track c++-style slogans
- Hello World with C++2a modules (2019-11-07) how-to llvm
- Hot take: P0947R0 “Another take on Modules” (2018-03-14) jacksonville-2018 language-design rant wg21
morality
- Thoughts on “Does GPT-2 Know Your Phone Number?” (2020-12-27) blog-roundup science
- Colonel Blimp and An Inspector Calls (2020-11-01) litclub movies old-shit
- What I’m reading lately: New York, The Atlantic, The Three-Body Problem (2020-08-15) litclub us-politics
- What I’m reading lately: ACOUP, Kitbashed, the Atlantic (2020-07-06) blog-roundup litclub movies us-politics
- What I’m reading lately: The Compleat Boucher (2020-04-05) litclub old-shit sre
- Discrete Peaceful Encampments, Bernie Sanders version (2020-03-21) litclub math puzzles us-politics
- Confessions of a Justified Sinner (2019-08-06) gilbert-and-sullivan litclub old-shit
- What I’m reading lately (2019-07-19) blog-roundup litclub old-shit sre
- Against the Grain: Contraception, abortion, and slow death (2018-12-26) litclub
- “Counterfactual mugging” a.k.a. “charity” (2018-11-19) blog-roundup litclub us-politics
- Godspell and Max Havelaar (2018-07-23) jokes movies old-shit
- Assume a spherical politician (2018-07-04) science us-politics
- Providentissimus Deus (2018-03-13) undefined-behavior
move-semantics
-
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) c++-learner-track compile-time-performance pitfalls - Thoughts on “The C++ Rvalue Lifetime Disaster” (2020-03-04) copy-elision paradigm-shift
- Self-assignment and the Rule of Zero (2019-08-20) pitfalls
-
const
is a contract (2019-01-03) c++-learner-track c++-style slogans - Should foo be move-only? (2019-01-02) concepts library-design type-erasure
- Trivially swappable (2018-06-29) proposal relocatability
- Superconstructing super elider, round 2 (2018-05-17) blog-roundup copy-elision today-i-learned
- Copy Elision in Throw Statements (2018-04-09) copy-elision exception-handling sufficiently-smart-compiler
-
On lifetime extension and
decltype(auto)
(2018-04-05) c++-style lifetime-extension - The Superconstructing Super Elider (2018-03-29) copy-elision proposal sufficiently-smart-compiler
movies
- Colonel Blimp and An Inspector Calls (2020-11-01) litclub morality old-shit
- What I’m reading lately: ACOUP, Kitbashed, the Atlantic (2020-07-06) blog-roundup litclub morality us-politics
- Transcription of All Of Them Witches (2019-08-26) litclub old-shit
- Against the Grain: Pitcher plant (2018-12-25) litclub
- Godspell and Max Havelaar (2018-07-23) jokes morality old-shit
- The Demagogue in Politics (2018-04-03) old-shit us-politics
- Johnny Eck in Tarzan Escapes (2018-03-24) old-shit today-i-learned
music
- Hello Muddah, Hello Faddah (Coronavirus Version) (2020-04-08) jokes memes
- RFM: Request for mashups (2019-03-17) this-should-exist
- This should exist: Markov music for radio lacunae (2018-03-21) this-should-exist
name-lookup
-
decltype
of a non-static member (2021-02-10) concepts implementation-divergence - Fun with conversion-operator name lookup (2021-01-13) implementation-divergence
- How do C++ using-directives work? (2020-12-21) argument-dependent-lookup c++-learner-track namespaces
- A quirk of qualified member lookup (2020-01-11) implementation-divergence language-design slack templates today-i-learned
namespaces
- How do C++ using-directives work? (2020-12-21) argument-dependent-lookup c++-learner-track name-lookup
naming
-
inplace_foo
versusfixed_capacity_foo
(2018-06-18) library-design sg14 - Default-constructibility is overrated (2018-05-10) concepts constructors rant templates wg21
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 language-design operator-spaceship templates wg21
- Zoological case naming (2018-03-16) c++-style memes
networking
- OpenSSL client and server from scratch, part 5 (2020-01-28) library-design web
- OpenSSL client and server from scratch, part 4 (2020-01-27) library-design
- OpenSSL client and server from scratch, part 3 (2020-01-26) library-design
- OpenSSL client and server from scratch, part 2 (2020-01-25) library-design
- OpenSSL client and server from scratch, part 1 (2020-01-24) library-design
- How DNS got so complicated (2018-11-20) sre wg21
old-shit
- Colonel Blimp and An Inspector Calls (2020-11-01) litclub morality movies
- Site reliability engineering at Ardeer; eyewitnesses to Hiroshima (2020-10-17) blog-roundup sre
- What I’m reading lately: The Ring of Words (2020-08-05) etymology litclub today-i-learned
- A Parody on Iolanthe (2020-07-20) gilbert-and-sullivan litclub today-i-learned
- What I’m reading lately: The Compleat Boucher (2020-04-05) litclub morality sre
- De Canibus Britannicis (2019-12-17) blog-roundup etymology litclub memes
- Transcription of All Of Them Witches (2019-08-26) litclub movies
- Confessions of a Justified Sinner (2019-08-06) gilbert-and-sullivan litclub morality
- What I’m reading lately (2019-07-19) blog-roundup litclub morality sre
- The wit of Macaulay, who wrote of Frederick II (2019-04-29)
- Booth bits; modern cuisine (2019-03-28) food
- On choosing the exact right terminology (2019-01-15) sre
- The “Red Clause” (2018-10-05) us-politics
- Pray-Mister-Babbage problems (2018-09-26) memes
- The Mysteries of London (2018-09-05) litclub us-politics
- The Three Impostors: Four-ale and six-ale (2018-07-26) litclub today-i-learned weird-fiction
- Godspell and Max Havelaar (2018-07-23) jokes morality movies
- Renowned author Dan Brown; London’s Gold-Mines (2018-07-10) litclub
- Madame Scarron (2018-06-22) litclub
- Great Deploy Plans of History: Time Zones (2018-05-21) sre
- The Description of a New World, Called The Blazing-World (2018-04-05) litclub
- The Demagogue in Politics (2018-04-03) movies us-politics
- Johnny Eck in Tarzan Escapes (2018-03-24) movies today-i-learned
operator-spaceship
-
Mangling dependent parameter types, or, what happened to
std::default_order
(2019-08-08) metaprogramming pitfalls standard-library-trivia templates wg21-folkloristics - Enums break strong structural equality (2019-07-04) templates wg21
- How my papers did at Kona (2019-03-20) kona-2019 relocatability wg21
-
Pointer comparisons with
std::less<void>
: a horror story (2019-01-20) metaprogramming rant standard-library-trivia undefined-behavior - C++ doesn’t know how to do customization points that aren’t operators (2018-08-23) customization-points rant
- Comparison categories for narrow-contract comparators (2018-08-07) concepts contracts undefined-behavior
- Contra built-in library types (2018-04-15) implementation-divergence language-design rant
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 language-design naming templates wg21
order-of-evaluation
paradigm-shift
- The Tau Manifesto (2020-03-14) blog-roundup math
- Thoughts on “The C++ Rvalue Lifetime Disaster” (2020-03-04) copy-elision move-semantics
- Fork considered harmful; paint splatters considered Perl (2019-04-13) blog-roundup
- Concepts as door-opening robots (2018-09-24) c++-style concepts cppcon
- Borrow types, Round 2 (2018-03-28) c++-style parameter-only-types
-
std::string_view
is a borrow type (2018-03-27) c++-style lifetime-extension parameter-only-types pitfalls - Async/await, and coloring schemes in general (2018-03-16) blog-roundup coroutines exception-handling language-design
parameter-only-types
- Lifetime extension applies to whole objects (2020-11-16) implementation-divergence lifetime-extension
- C++Now 2020: A C++ Magic Trick (2020-05-04) cppnow web
-
c_str
-correctness (2020-03-20) c++-style - An unexpected brush with “strong typedefs” (2019-10-10) library-design standard-library-trivia
-
A trivially copyable ticket for a
unique_ptr
(2019-09-21) cppcon relocatability - C++2a Coroutines and dangling references (2019-07-10) coroutines pitfalls
-
MapView
can be faster thanMapRef
(2019-05-27) cppnow library-design -
The space of design choices for
std::function
(2019-03-27) library-design type-erasure - Value category is not lifetime (2019-03-11) c++-learner-track library-design metaprogramming pitfalls slogans
- Reference types with metadata cause problems (2018-05-30) library-design pitfalls sg14 wg21
- Borrow types, Round 2 (2018-03-28) c++-style paradigm-shift
-
std::string_view
is a borrow type (2018-03-27) c++-style lifetime-extension paradigm-shift pitfalls
pearls
-
Type-erased
UniquePrintable
andPrintableRef
(2020-11-24) slack type-erasure - Two approaches to secret sharing: math vs. blockchain (2020-02-12) esolang math
-
How to replace
__FILE__
withsource_location
in a logging macro (2020-02-12) c++-style preprocessor -
C++ idiom of the day:
arrow_proxy
(2019-02-06) library-design metaprogramming -
make_range
andreversed
(2018-08-29) ranges templates - Stopping the cascade of errors (2018-08-23) concepts metaprogramming templates
-
Exploring C++ types with
puts(__PRETTY_FUNCTION__)
(2018-08-22) templates -
The
Auto
macro (2018-08-11) c++-style memes preprocessor - Embedding quotes in strings (2018-04-27) c++-style war-stories
pitfalls
- Escape analysis hates copy elision (2021-03-07) copy-elision implicit-move proposal slack
-
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) c++-learner-track compile-time-performance move-semantics - “Flash of unstyled base class” (2020-12-09) classical-polymorphism concurrency war-stories
-
Why do I get a linker error with
static const
andvalue_or
? (2020-09-19) c++-learner-track cppcon war-stories - Ways C++ prevents you from doing X (2020-03-17) access-control c++-learner-track
-
Contra
char *argv[]
(2020-03-12) rant -
Hidden
reinterpret_cast
s (2020-01-22) slack templates -
PSA:
<random>
’s distributions are stateful (2019-10-22) random-numbers rant standard-library-trivia - ADL can interfere even with uglified names (2019-09-26) argument-dependent-lookup standard-library-trivia
- Self-assignment and the Rule of Zero (2019-08-20) move-semantics
-
Mangling dependent parameter types, or, what happened to
std::default_order
(2019-08-08) metaprogramming operator-spaceship standard-library-trivia templates wg21-folkloristics - C++2a Coroutines and dangling references (2019-07-10) coroutines parameter-only-types
- MSVC can’t handle move-only exception types (2019-05-11) cppnow exception-handling relocatability
-
On
function_ref
andstring_view
(2019-05-10) cppnow library-design - Value category is not lifetime (2019-03-11) c++-learner-track library-design metaprogramming parameter-only-types slogans
-
PSA:
shared_ptr<T>()
is notmake_shared<T>()
(2019-03-06) war-stories - Not variadic expression templates (2019-02-23) kona-2019 metaprogramming variadic-templates
- Don’t inherit from standard types (2018-12-11) c++-style class-template-argument-deduction library-design slogans
- Contra CTAD (2018-12-09) blog-roundup class-template-argument-deduction compiler-diagnostics llvm
-
Pitfalls and decision points in implementing
const_iterator
(2018-12-01) antipatterns c++-style constructors library-design metaprogramming stl-classic -
Remember the
ifstream
(2018-11-26) classical-polymorphism concepts library-design - Callee-destroy versus caller-destroy parameter lifetimes (2018-11-12) attributes copy-elision
-
An argument pro liberal use of
[[nodiscard]]
(2018-11-06) c++-style - WG21: Avoid creating ADL situations on functions with semi-common names (2018-11-04) argument-dependent-lookup customization-points proposal san-diego-2018 wg21
- Constrained forwarding references considered sketchy as frick (2018-09-09) concepts metaprogramming
- Field-testing Herb Sutter’s Modest Proposal to Fix ADL (2018-08-13) argument-dependent-lookup compiler-diagnostics llvm proposal
- When is a trivially copyable object not trivially copyable? (2018-07-13) proposal relocatability wg21
- C++ quiz of the day (2018-07-08) relocatability
- Defaulted destructor inhibits move (2018-07-07)
- The surprisingly high cost of static-lifetime constructors (2018-06-26) compile-time-performance hyperrogue initializer-list war-stories
- Avoid ADL calls to functions with common names (2018-06-17) argument-dependent-lookup customization-points hyperrogue war-stories
- Reference types with metadata cause problems (2018-05-30) library-design parameter-only-types sg14 wg21
- Contra implicit declarations of struct types (2018-05-16) language-design rant
- Downsides of omitting trivial destructor calls (2018-04-17) standard-library-trivia sufficiently-smart-compiler today-i-learned
- A modest proposal for a GCC diagnostic (2018-04-09) compiler-diagnostics memes this-should-exist
-
std::string_view
is a borrow type (2018-03-27) c++-style lifetime-extension paradigm-shift parameter-only-types
preprocessor
- What are X-macros? (2021-02-01) adventure c++-learner-track hyperrogue
-
How to replace
__FILE__
withsource_location
in a logging macro (2020-02-12) c++-style pearls - A simpler SUBSUMES() macro (2018-09-23) concepts metaprogramming rant
- A use-case for member concepts and/or template concept parameters (2018-09-17) concepts rant
-
The
Auto
macro (2018-08-11) c++-style memes pearls -
The
FORCE_CONSTEXPR
macro (2018-08-07) c++-style sufficiently-smart-compiler
proposal
- Escape analysis hates copy elision (2021-03-07) copy-elision implicit-move pitfalls slack
- How different compilers deal with provably unused entities (2020-12-02) access-control compiler-diagnostics implementation-divergence llvm sufficiently-smart-compiler
-
Precedence of a proposed
|>
operator (2020-04-10) coroutines language-design ranges wg21 - Field-testing “Down with lifetime extension!” (2020-03-04) copy-elision initializer-list lifetime-extension llvm
-
Contra P0339 “
polymorphic_allocator<>
as a vocabulary type” (2019-07-02) allocators class-template-argument-deduction library-design rant wg21 - In support of P1485 “Better keywords for coroutines” (2019-06-26) coroutines wg21
- WG21: Avoid creating ADL situations on functions with semi-common names (2018-11-04) argument-dependent-lookup customization-points pitfalls san-diego-2018 wg21
- Fixing ADL, Round 2 (2018-08-14) argument-dependent-lookup llvm
- Field-testing Herb Sutter’s Modest Proposal to Fix ADL (2018-08-13) argument-dependent-lookup compiler-diagnostics llvm pitfalls
- Announcing “trivially relocatable” (2018-07-18) relocatability
- When is a trivially copyable object not trivially copyable? (2018-07-13) pitfalls relocatability wg21
-
operator auto
(2018-07-12) implementation-divergence metaprogramming rant today-i-learned - Trivially swappable (2018-06-29) move-semantics relocatability
-
Attribute
noexcept_verify
(2018-06-12) compiler-diagnostics exception-handling -
has_no_padding_bits
(2018-06-08) rant -
std::priority_queue
is missing an operation (2018-04-27) library-design -
Use-cases for
false_v
(2018-04-02) templates undefined-behavior - The Superconstructing Super Elider (2018-03-29) copy-elision move-semantics sufficiently-smart-compiler
- Namespaces for UDLs (2018-03-21) jacksonville-2018 wg21
puzzles
- Antisocial Homeworlds, and a solitaire challenge (2021-04-04) board-games
- Homeworlds Puzzle: Mercury in Retrograde (2020-10-28) board-games
- Homeworlds Puzzle: Burnt Umber (2020-10-25) board-games
- Thoughts on OEIS A125508 (2020-10-18) board-games celebration-of-mind math web
- Conway’s Soldiers (2020-10-17) blog-roundup
- Homeworlds Puzzle: The Prestige (2020-06-16) board-games
- Homeworlds Puzzle: War Games (2020-05-30) board-games
- Homeworlds Puzzle: Mini Doomsday Machine (2020-05-29) board-games web
- Discrete Peaceful Encampments, Bernie Sanders version (2020-03-21) litclub math morality us-politics
- Wolves and Sheep, with tables (2020-01-10) math
- Discrete Peaceful Encampments, with tables (2019-10-18) math
- Puzzle: Wolves and sheep (2019-04-17) math
- README for my Peaceful Encampments visualizer (2019-03-18) math web
- Colossal Cave Adventure: open world challenge (2019-01-28) adventure web
- Discrete Peaceful Encampments (2019-01-24) math
- Peaceful Encampments, round 2 (2019-01-21) math web
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) adventure celebration-of-mind knuth litclub math web
- Meta-sudoku, round 4: A valid meta-puzzle (2018-11-20) math
- Meta-sudoku, round 3: D’oh! (2018-11-19) math
- Meta-sudoku, round 2 (2018-11-18) math
- Puzzle: Sudoku Stories (2018-10-26) math
- Portia’s Caskets, Explained (2018-07-06) blog-roundup jokes math
- Puzzle: Policing Squaresville (2018-05-10) blog-roundup math
- Hanabi set-packing puzzle (2018-04-09) board-games math
random-numbers
ranges
-
The STL is more than
std::accumulate
(2020-12-14) cppcon memes rant stl-classic -
Precedence of a proposed
|>
operator (2020-04-10) coroutines language-design proposal wg21 -
Announcing
Quuxplusone/coro
, single-header C++2a example code (2019-07-03) concepts coroutines web - Four versions of Eric’s Famous Pythagorean Triples Code (2019-03-06) coroutines metaprogramming sufficiently-smart-compiler
-
for (auto&& elt : range)
Still Always Works (2018-12-27) c++-style -
make_range
andreversed
(2018-08-29) pearls templates
rant
-
The STL is more than
std::accumulate
(2020-12-14) cppcon memes ranges stl-classic -
Tips re
operator()
(2020-12-12) c++-style lambdas metaprogramming - Two musings on the design of compiler warnings (2020-09-02) c++-style compiler-diagnostics language-design
- How to erase from an STL container (2020-07-08) c++-learner-track library-design standard-library-trivia stl-classic
- Default function arguments are the devil (2020-04-18) c++-learner-track c++-style language-design library-design slogans
-
A seasonal followup to “When is
*x
also&x
?” (2020-04-01) -
Contra
char *argv[]
(2020-03-12) pitfalls -
Holiday fun with
template<class>
andtemplate<typename>
(2019-12-27) class-template-argument-deduction implementation-divergence templates - Setup and teardown routines in non-flat class hierarchies (2019-12-03) classical-polymorphism slack
- Slack’s new WYSIWYG input box is really terrible (2019-11-20) slack web
-
PSA:
<random>
’s distributions are stateful (2019-10-22) pitfalls random-numbers standard-library-trivia - The post-Cologne mailing is out (2019-08-18) allocators copy-elision coroutines wg21
-
Contra P0339 “
polymorphic_allocator<>
as a vocabulary type” (2019-07-02) allocators class-template-argument-deduction library-design proposal wg21 - “Understanding Real-World Concurrency Bugs in Go” (2019-06-06) concurrency science
- The Knightmare of Initialization in C++ (2019-02-18) board-games constructors language-design
- On teaching Unicode in C++ (2019-02-03) typography
- Hot takes on P1452, P1470, P0408, and P0843 (2019-02-03) concepts kona-2019 library-design wg21
-
Hot takes on
flat_map
,resize_default_init
, andranges::to
(2019-01-28) kona-2019 wg21 -
Pointer comparisons with
std::less<void>
: a horror story (2019-01-20) metaprogramming operator-spaceship standard-library-trivia undefined-behavior -
requires
-expression grammar trivia (2019-01-17) concepts language-design - Execution-agent-local storage (2018-11-14) memes thread-local-storage
- A simpler SUBSUMES() macro (2018-09-23) concepts metaprogramming preprocessor
- A use-case for member concepts and/or template concept parameters (2018-09-17) concepts preprocessor
- The big problems for C++11 SFINAE (2018-09-08) concepts metaprogramming
- C++ doesn’t know how to do customization points that aren’t operators (2018-08-23) customization-points operator-spaceship
-
operator auto
(2018-07-12) implementation-divergence metaprogramming proposal today-i-learned - Trivially-constructible-from (2018-07-03) relocatability standard-library-trivia
- Is your constructor an object-factory or a type-conversion? (2018-06-21) constructors library-design
-
has_no_padding_bits
(2018-06-08) proposal -
Pointer to raw memory?
T*
. (2018-06-08) allocators c++-style library-design standard-library-trivia - Contra implicit declarations of struct types (2018-05-16) language-design pitfalls
- A pro-default-constructibility experiment from 2007 (2018-05-10) concepts constructors science
- Default-constructibility is overrated (2018-05-10) concepts constructors naming templates wg21
- Contra built-in library types (2018-04-15) implementation-divergence language-design operator-spaceship
- Hot take: P0947R0 “Another take on Modules” (2018-03-14) jacksonville-2018 language-design modules wg21
-
The “
unsigned
for value range” antipattern (2018-03-13) antipatterns c++-style undefined-behavior
relocatability
-
A trivially copyable ticket for a
unique_ptr
(2019-09-21) cppcon parameter-only-types - My C++Now 2019 talks are captioned (2019-06-25) conferences cppnow
- MSVC can’t handle move-only exception types (2019-05-11) cppnow exception-handling pitfalls
- How my papers did at Kona (2019-03-20) kona-2019 operator-spaceship wg21
-
P1144 case study: Moving a
fixed_capacity_vector
(2019-02-22) kona-2019 sg14 -
What library types are
trivially_relocatable
in practice? (2019-02-20) implementation-divergence kona-2019 -
Quick and unscientific
trivially_relocatable
benchmark (2019-02-12) kona-2019 -
[[trivially_relocatable]]
in San Diego: call for reader feedback (2018-11-11) san-diego-2018 - Cheaply relocatable, but not trivially relocatable (2018-10-26)
- I won’t be in San Diego (2018-10-20) san-diego-2018
- Trivially Relocatable FAQ (2018-10-04)
- Trivially Relocatable versus Destructive Movable (2018-09-28) conferences cppcon
-
mutable
and “trivially fooable” (2018-08-19) wg21 -
Case study: Making
std::any
trivially relocatable (2018-08-02) library-design - Announcing “trivially relocatable” (2018-07-18) proposal
- When is a trivially copyable object not trivially copyable? (2018-07-13) pitfalls proposal wg21
- C++ quiz of the day (2018-07-08) pitfalls
- Thoughts on “sanely move-assignable” (2018-07-06) concepts
- Trivially-constructible-from (2018-07-03) rant standard-library-trivia
- Trivially swappable (2018-06-29) move-semantics proposal
- My C++Now 2018 talks are captioned (2018-06-13) allocators conferences cppnow
- My C++Now 2018 talks are up (2018-06-04) allocators conferences cppnow
san-diego-2018
-
[[trivially_relocatable]]
in San Diego: call for reader feedback (2018-11-11) relocatability - WG21: Avoid creating ADL situations on functions with semi-common names (2018-11-04) argument-dependent-lookup customization-points pitfalls proposal wg21
- I won’t be in San Diego (2018-10-20) relocatability
science
- Thoughts on “Does GPT-2 Know Your Phone Number?” (2020-12-27) blog-roundup morality
- Prince Rupert’s Lego Cube (2019-07-23) math
- Notes on Prince Rupert’s Problem (2019-07-22) math today-i-learned
- “Understanding Real-World Concurrency Bugs in Go” (2019-06-06) concurrency rant
- Measuring adoption of C++17 and CTAD in real codebases (2019-01-16) class-template-argument-deduction llvm
- The blow-up problem (2019-01-14) jokes
- Quantum Computing for the Determined (2018-08-05) blog-roundup math
- Assume a spherical politician (2018-07-04) morality us-politics
- Rubens tube (2018-05-30) today-i-learned
- A pro-default-constructibility experiment from 2007 (2018-05-10) concepts constructors rant
sg14
-
P1144 case study: Moving a
fixed_capacity_vector
(2019-02-22) kona-2019 relocatability -
Contra P0429R6
flat_map
(2019-01-29) kona-2019 library-design wg21 -
37 percent of HyperRogue’s compilation time is due to
std::function
(2019-01-06) compile-time-performance hyperrogue type-erasure war-stories -
inplace_foo
versusfixed_capacity_foo
(2018-06-18) library-design naming - Reference types with metadata cause problems (2018-05-30) library-design parameter-only-types pitfalls wg21
-
[[trivial_abi]]
101 (2018-05-02) attributes copy-elision llvm
slack
- Escape analysis hates copy elision (2021-03-07) copy-elision implicit-move pitfalls proposal
- When your loop unroller works harder than your infinite loop detector (2021-02-26) memes
- An example of the Barton–Nackman trick (2020-12-09) argument-dependent-lookup stl-classic templates
-
Loop variable may not be declared
static
(2020-12-03) memes thread-local-storage -
Type-erased
UniquePrintable
andPrintableRef
(2020-11-24) pearls type-erasure -
while (auto x=y; z)
(2020-10-28) language-design - Grab bag (2020-10-12) blog-roundup us-politics
- Left-folding and right-folding an arbitrary callable (2020-10-12) metaprogramming variadic-templates
-
Hidden
reinterpret_cast
s (2020-01-22) pitfalls templates - A quirk of qualified member lookup (2020-01-11) implementation-divergence language-design name-lookup templates today-i-learned
- Setup and teardown routines in non-flat class hierarchies (2019-12-03) classical-polymorphism rant
- Slack’s new WYSIWYG input box is really terrible (2019-11-20) rant web
- Seen on the CppCon whiteboard (2019-09-18) concepts conferences cppcon
- A C++ acronym glossary (2019-08-02) c++-learner-track wg21-folkloristics
- API design (2018-07-09) memes
- First post — Jekyll Now (2018-03-13) how-to web
slogans
- The “OO” Antipattern (2020-05-28) antipatterns blog-roundup c++-learner-track c++-style war-stories
- Default function arguments are the devil (2020-04-18) c++-learner-track c++-style language-design library-design rant
-
When is
*x
also&x
? (2020-03-31) c++-learner-track - Namespaces are for preventing name collisions (2020-01-07) c++-learner-track c++-style modules
- CppCon 2019 talks are up (2019-10-18) cppcon
- Value category is not lifetime (2019-03-11) c++-learner-track library-design metaprogramming parameter-only-types pitfalls
-
const
is a contract (2019-01-03) c++-learner-track c++-style move-semantics - Don’t inherit from standard types (2018-12-11) c++-style class-template-argument-deduction library-design pitfalls
sre
- Site reliability engineering at Ardeer; eyewitnesses to Hiroshima (2020-10-17) blog-roundup old-shit
- What I’m reading lately: The Compleat Boucher (2020-04-05) litclub morality old-shit
- The Design of Everyday Things (2020-03-07) cppcon litclub
- Making floppy disk images under OS X (2019-07-26) how-to
- What I’m reading lately (2019-07-19) blog-roundup litclub morality old-shit
- On choosing the exact right terminology (2019-01-15) old-shit
- Les Fleurs de Tarbes (2019-01-14) litclub
- How DNS got so complicated (2018-11-20) networking wg21
- shields.io (2018-06-26) hyperrogue today-i-learned web
- “We were defeated by one thing only—” (2018-06-22) litclub
- Great Deploy Plans of History: Time Zones (2018-05-21) old-shit
standard-library-trivia
-
std::once_flag
is a glass hill (2020-10-23) concurrency cppcon litclub -
For what inputs is
std::sort
unstable? (2020-09-11) - How to erase from an STL container (2020-07-08) c++-learner-track library-design rant stl-classic
- SFINAE special members or support incomplete types: Pick at most one (2020-02-05) concepts implementation-divergence library-design metaprogramming templates
-
PSA:
<random>
’s distributions are stateful (2019-10-22) pitfalls random-numbers rant - An unexpected brush with “strong typedefs” (2019-10-10) library-design parameter-only-types
- ADL can interfere even with uglified names (2019-09-26) argument-dependent-lookup pitfalls
-
Mangling dependent parameter types, or, what happened to
std::default_order
(2019-08-08) metaprogramming operator-spaceship pitfalls templates wg21-folkloristics -
How
hana::type<T>
“disables ADL” (2019-04-09) argument-dependent-lookup -
Is
__int128
integral? A survey (2019-02-28) implementation-divergence - Fetishizing class invariants (2019-02-24) kona-2019 library-design metaprogramming
-
Pointer comparisons with
std::less<void>
: a horror story (2019-01-20) metaprogramming operator-spaceship rant undefined-behavior - Trivially-constructible-from (2018-07-03) rant relocatability
-
Pointer to raw memory?
T*
. (2018-06-08) allocators c++-style library-design rant -
In praise of
make_unique
(2018-05-26) c++-style - Downsides of omitting trivial destructor calls (2018-04-17) pitfalls sufficiently-smart-compiler today-i-learned
stl-classic
-
The STL is more than
std::accumulate
(2020-12-14) cppcon memes ranges rant - An example of the Barton–Nackman trick (2020-12-09) argument-dependent-lookup slack templates
- “Classic STL” at CppCon 2020 (2020-09-12) conferences cppcon training
- How to erase from an STL container (2020-07-08) c++-learner-track library-design rant standard-library-trivia
-
Pitfalls and decision points in implementing
const_iterator
(2018-12-01) antipatterns c++-style constructors library-design metaprogramming pitfalls
sufficiently-smart-compiler
- When can the C++ compiler devirtualize a call? (2021-02-15) classical-polymorphism implementation-divergence
- How different compilers deal with provably unused entities (2020-12-02) access-control compiler-diagnostics implementation-divergence llvm proposal
- The abstraction penalty for wide integer math on x86-64 (2020-02-13) llvm
- Four versions of Eric’s Famous Pythagorean Triples Code (2019-03-06) coroutines metaprogramming ranges
-
The
FORCE_CONSTEXPR
macro (2018-08-07) c++-style preprocessor - Downsides of omitting trivial destructor calls (2018-04-17) pitfalls standard-library-trivia today-i-learned
- Copy Elision in Throw Statements (2018-04-09) copy-elision exception-handling move-semantics
- The Superconstructing Super Elider (2018-03-29) copy-elision move-semantics proposal
templates
- Blog roundup: Auftragstaktik, files, lesser-known cryptocurrencies (2021-02-13) blog-roundup concepts etymology jokes
- An example of the Barton–Nackman trick (2020-12-09) argument-dependent-lookup slack stl-classic
- How to use a private member from outside the class (2020-12-03) access-control metaprogramming
-
SFINAE and
E1.E2
(2020-11-01) concepts implementation-divergence - Inheritance is for sharing an interface (and so is overloading) (2020-10-09) c++-style classical-polymorphism metaprogramming
-
Classically polymorphic
visit
replaces some uses ofdynamic_cast
(2020-09-29) classical-polymorphism metaprogramming variadic-templates war-stories - SFINAE special members or support incomplete types: Pick at most one (2020-02-05) concepts implementation-divergence library-design metaprogramming standard-library-trivia
-
Hidden
reinterpret_cast
s (2020-01-22) pitfalls slack - A quirk of qualified member lookup (2020-01-11) implementation-divergence language-design name-lookup slack today-i-learned
- Comparative TMP #1: MPL, Mp11, Kvasir, Hana, Metal (2019-12-28) metaprogramming
-
Holiday fun with
template<class>
andtemplate<typename>
(2019-12-27) class-template-argument-deduction implementation-divergence rant -
Mangling dependent parameter types, or, what happened to
std::default_order
(2019-08-08) metaprogramming operator-spaceship pitfalls standard-library-trivia wg21-folkloristics -
Conditional
explicit
is not the same thing as forwardingexplicit
(2019-07-05) metaprogramming - Enums break strong structural equality (2019-07-04) operator-spaceship wg21
- P1616R0 and health insurance (2019-07-03) concepts implementation-divergence metaprogramming wg21
- Covariance and contravariance in C++ (2019-01-20) concepts implementation-divergence metaprogramming variadic-templates
-
make_range
andreversed
(2018-08-29) pearls ranges - Stopping the cascade of errors (2018-08-23) concepts metaprogramming pearls
-
Exploring C++ types with
puts(__PRETTY_FUNCTION__)
(2018-08-22) pearls - Template metaprogramming: Iteration is better than recursion (2018-07-23) compile-time-performance metaprogramming variadic-templates
-
What does the Standard mean by “
_traits
”? (2018-07-14) allocators customization-points library-design metaprogramming wg21 - Default-constructibility is overrated (2018-05-10) concepts constructors naming rant wg21
- Hiding template parameters from casual users (2018-05-09) c++-style
-
Use-cases for
false_v
(2018-04-02) proposal undefined-behavior - Customization point design for library functions (2018-03-19) argument-dependent-lookup customization-points library-design memes
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 language-design naming operator-spaceship wg21
this-should-exist
- RFM: Request for mashups (2019-03-17) music
- A modest proposal for a GCC diagnostic (2018-04-09) compiler-diagnostics memes pitfalls
- This should exist: Markov music for radio lacunae (2018-03-21) music
thread-local-storage
-
Loop variable may not be declared
static
(2020-12-03) memes slack - Execution-agent-local storage (2018-11-14) memes rant
-
Setting errno in
operator T
(2018-06-01)
today-i-learned
- What I’m reading lately: The Ring of Words (2020-08-05) etymology litclub old-shit
- A Parody on Iolanthe (2020-07-20) gilbert-and-sullivan litclub old-shit
- A quirk of qualified member lookup (2020-01-11) implementation-divergence language-design name-lookup slack templates
- Notes on Prince Rupert’s Problem (2019-07-22) math science
- Fictional islands that are neither fictional nor islands (2018-12-16) etymology gilbert-and-sullivan litclub
- The Three Impostors: Four-ale and six-ale (2018-07-26) litclub old-shit weird-fiction
-
operator auto
(2018-07-12) implementation-divergence metaprogramming proposal rant - shields.io (2018-06-26) hyperrogue sre web
- Which in your case you have not got (2018-06-17) litclub
- Rubens tube (2018-05-30) science
- Superconstructing super elider, round 2 (2018-05-17) blog-roundup copy-elision move-semantics
- Downsides of omitting trivial destructor calls (2018-04-17) pitfalls standard-library-trivia sufficiently-smart-compiler
- Johnny Eck in Tarzan Escapes (2018-03-24) movies old-shit
training
type-erasure
-
Type-erased
UniquePrintable
andPrintableRef
(2020-11-24) pearls slack -
The space of design choices for
std::function
(2019-03-27) library-design parameter-only-types - What is Type Erasure? (2019-03-18) c++-learner-track library-design metaprogramming
-
37 percent of HyperRogue’s compilation time is due to
std::function
(2019-01-06) compile-time-performance hyperrogue sg14 war-stories - Should foo be move-only? (2019-01-02) concepts library-design move-semantics
typography
- Arrays aren’t pointers (2020-11-25) c++-learner-track memes
- Scott Kim’s rotational ambigrams for the Celebration of Mind (2020-10-18) celebration-of-mind math web
- On teaching Unicode in C++ (2019-02-03) rant
- If English was written like Chinese (2018-07-13) blog-roundup
- Chinese fonts, and METAFONT (2018-04-15) blog-roundup esolang knuth