access-control (5)
- History of non-standard-layout class layouts (2022-03-04) wg21-folkloristics
- 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 (18)
- Playing A Serf’s Tale (1986) (2024-09-30) playable-games
- The little bird attacks the snake (2024-08-26) etymology litclub old-shit
- Playing The Search for Almazar (1981) (2022-08-13) digital-antiquaria
- Play The Search for Almazar online (2021-05-16) digital-antiquaria playable-games web
- Nifty notebooks, and Almazar (2021-05-13) castlequest digital-antiquaria
- An interview with Arthur O’Dwyer (2021-05-11) castlequest digital-antiquaria help-wanted
- Observations on Castlequest’s code (2021-03-21) castlequest digital-antiquaria
- Playing Castlequest (1980), Part 1 (2021-03-19) castlequest digital-antiquaria
- Castlequest exhumed! (2021-03-09) castlequest digital-antiquaria
- Adventure 448 (SWEN0448): All the easter eggs (2021-02-27) digital-antiquaria
- 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) digital-antiquaria esolang
- A bug in Adventure’s endgame (2020-02-06) digital-antiquaria knuth war-stories
- Dealing with Dragons (2019-06-09) litclub
- Colossal Cave Adventure: open world challenge (2019-01-28) digital-antiquaria 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 digital-antiquaria knuth
alcestis (3)
- Issachar Styrke’s Alcestis Burlesqued (2022-10-24) gilbert-and-sullivan litclub old-shit poetry
- Notes on Sonia Greene’s Alcestis (2022-10-23) gilbert-and-sullivan litclub old-shit weird-fiction
- Sonia Greene’s Alcestis (2022-10-22) litclub old-shit transcription weird-fiction
allocators (11)
-
Boost.Interprocess, and
sg14::inplace_vector
(2024-08-23) data-structures proposal relocatability sg14 stl-classic -
Quuxplusone/SG14
now hasinplace_vector
(2023-10-20) library-design proposal relocatability sg14 standard-library-trivia - P1144 PMR koans (2023-06-03) implementation-divergence relocatability value-semantics varna-2023 wg21
- A not-so-quick introduction to the C++ allocator model (2023-06-02) relocatability value-semantics
- 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 (10)
-
Why don’t compilers warn for
const T f()
? (2024-10-07) c++-style compiler-diagnostics llvm -
volatile
means it really happens (2022-01-28) c++-learner-track concurrency slogans -
const
all the things? (2022-01-23) c++-style holy-wars pitfalls -
Underseeding
mt19937
; introducingxoshiro256ss
(2021-11-23) pearls random-numbers -
Don’t reopen
namespace std
(2021-10-27) c++-style cppcon sd-8-adjacent slogans templates -
An
iterator
IS-NOT-Aconst_iterator
(2021-07-14) implementation-divergence library-design stl-classic - 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 (20)
- Two more musings on Clang diagnostics (2022-05-05) compiler-diagnostics hidden-friend-idiom llvm templates
- To enable ADL, add a using-declaration (2022-04-30) c++-style customization-points library-design name-lookup paradigm-shift
- PSA: ADL requires that unqualified lookup has found a function (2022-04-14) cpplang-slack customization-points library-design name-lookup pitfalls standard-library-trivia
-
What if
vector<T>::iterator
were justT*
? (2022-03-03) implementation-divergence library-design llvm stl-classic -
operator<=>
doesn’t obsolete the hidden friend idiom (2021-10-22) c++-style hidden-friend-idiom operator-spaceship stl-classic -
What
=delete
means (2021-10-17) c++-learner-track library-design - Implementation divergence on swapping bools within vectors (2021-06-27) hidden-friend-idiom implementation-divergence stl-classic templates
- Overly interoperable libraries, part 3 (2021-05-26) cpplang-slack library-design metaprogramming
- 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) cpplang-slack hidden-friend-idiom 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 (6)
- How my papers did at Kona (2023-11-12) exception-handling implicit-move initializer-list kona-2023 lambdas library-design proposal relocatability stl-classic value-semantics wg21
- Guard nouns or guard verbs? (2023-11-11) concurrency exception-handling kona-2023 library-design mailing-list-quotes proposal
-
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
benchmarks (14)
-
noexcept
affects libstdc++’sunordered_set
(2024-08-16) data-structures exception-handling standard-library-trivia stl-classic triviality - Sorting at compile time, part 2 (2024-02-20) compile-time-performance constexpr metaprogramming ranges
-
Sorting
integer_sequence
at compile time (2024-02-19) compile-time-performance constexpr metaprogramming ranges -
Benchmarking Clang’s
-fbuiltin-std-forward
(2022-12-24) compile-time-performance cpplang-slack library-design llvm - Bit-vector manipulations in standard C++ (2022-11-05) implementation-divergence llvm standard-library-trivia stl-classic
-
unordered_multiset
’s API affects its big-O (2022-06-23) data-structures library-design standard-library-trivia stl-classic -
A compile-time benchmark for
enable_if
andrequires
, part 2 (2021-09-14) compile-time-performance concepts llvm metaprogramming -
A compile-time benchmark for
enable_if
andrequires
(2021-09-04) compile-time-performance concepts llvm metaprogramming -
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) c++-learner-track compile-time-performance move-semantics pitfalls - The abstraction penalty for wide integer math on x86-64 (2020-02-13) llvm sufficiently-smart-compiler
-
MapView
can be faster thanMapRef
(2019-05-27) cppnow library-design parameter-only-types -
Quick and unscientific
trivially_relocatable
benchmark (2019-02-12) flat-containers kona-2019 relocatability - The surprisingly high cost of static-lifetime constructors (2018-06-26) compile-time-performance hyperrogue initializer-list pitfalls war-stories
-
std::priority_queue
is missing an operation (2018-04-27) data-structures library-design proposal
blog-roundup (39)
- What I’m reading lately: Greppability, Hebb’s dictum (2024-10-15) jokes sre
- Andries Brouwer on the OOM killer (2024-08-22) mailing-list-quotes sre
- What I’m reading lately: Africa, liberty, economics (2024-01-12) litclub morality science
-
My muscle-memory
git
toolbox (2023-10-30) git training - R.I.P. The OFloinn (2023-10-03) morality old-shit
- Blog roundup: U+, Bloomfield, Stuka, Gino (2023-09-16) science today-i-learned typography
- What I’m reading lately: Dogs and Wolfe (2023-07-01) clement-wood litclub paradigm-shift
- The epitaph of Adrian’s horse (2023-03-22) jokes litclub old-shit poetry weird-fiction
- What I’m reading lately: tunnel edition (2022-11-12) jokes linguistics litclub math old-shit us-politics
- What I’m reading lately: Borges, Jung, Hitchcock (2022-09-24) litclub movies
- What I’m reading lately: Scholar’s Stage, Popper, Grug (2022-07-26) litclub science us-politics
- Cryptic poems, Mahabharata, means of production (2021-11-18) cppcon morality movies poetry puzzles us-politics
- 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) celebration-of-mind 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) cpplang-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) random-numbers
- 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) linguistics 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 (21)
- Mathematical golf (2023-03-23) clement-wood math old-shit puzzles
- The game of Zendo (2022-11-13) how-to
- The game of Lielow (2022-09-02) playable-games puzzles web
- The game of “Contact” (2021-11-12) how-to
- Antisocial Homeworlds, and a solitaire challenge (2021-04-04) homeworlds puzzles
- Homeworlds: Analysis of an Opening Gambit (2021-02-21) homeworlds
- Homeworlds Puzzle: Mercury in Retrograde (2020-10-28) homeworlds puzzles
- Homeworlds Puzzle: Burnt Umber (2020-10-25) homeworlds 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) playable-games web
- Homeworlds Puzzle: The Prestige (2020-06-16) homeworlds puzzles
- Homeworlds Puzzle: War Games (2020-05-30) homeworlds puzzles
- Homeworlds Puzzle: Mini Doomsday Machine (2020-05-29) homeworlds puzzles web
- Connect Fifteen (2020-05-03)
- The Knightmare of Initialization in C++ (2019-02-18) constructors initialization language-design rant
- Homeworlds: The Yellowbird Mistake, Part II (2018-09-15) homeworlds
- Homeworlds: The Yellowbird Mistake (2018-09-10) homeworlds
- Happy birthday, Don Woods (2018-04-30) adventure digital-antiquaria knuth
- Hanabi set-packing puzzle (2018-04-09) math puzzles
- Hat-game strategies in Hanabi (2018-03-29)
c++-learner-track (33)
- Name lookup in multiple base classes (2024-04-17) classical-polymorphism customization-points name-lookup
- Two kinds of function template parameters (2023-12-17) c++-style sd-8-adjacent templates
-
Just how
constexpr
is C++20’sstd::string
? (2023-09-08) constexpr cpplang-slack library-design - Always read the first error message first (2023-01-21) compiler-diagnostics
- Copy semantics, per Plato’s Sophist (2022-12-15) old-shit value-semantics
-
Refactoring with
=delete
(2022-11-11) overload-resolution war-stories - Prefer core-language features over library facilities (2022-10-16) c++-style concepts coroutines rant
- What is the “vector pessimization”? (2022-08-26) exception-handling move-semantics pitfalls stl-classic
-
void
versus[[noreturn]]
(2022-06-29) cpplang-slack litclub - C++20’s parenthesized aggregate initialization has some downsides (2022-06-03) constructors cpplang-slack initialization pitfalls
- “Universal reference” or “forwarding reference”? (2022-02-02) cpplang-slack holy-wars memes
-
volatile
means it really happens (2022-01-28) antipatterns concurrency slogans -
Three reasons to pass
std::string_view
by value (2021-11-09) c++-style library-design parameter-only-types -
What
=delete
means (2021-10-17) argument-dependent-lookup library-design -
static constexpr unsigned long
is C++’s “lovely little old French whittling knife” (2021-04-03) c++-style linguistics -
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) benchmarks 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) lambdas 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) cpplang-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 (53)
-
Why don’t compilers warn for
const T f()
? (2024-10-07) antipatterns compiler-diagnostics llvm - Two kinds of function template parameters (2023-12-17) c++-learner-track sd-8-adjacent templates
- The style guide must say how to do what you mustn’t do (2023-08-11) compiler-diagnostics language-design library-design
- A small C++ meme dump (2023-06-17) concepts cpplang-slack memes move-semantics relocatability stl-classic varna-2023
-
Make
operator<=>
ignore a data member (2023-06-05) operator-spaceship paradigm-shift pearls -
Don’t
forward
things that aren’t forwarding references (2023-05-27) -
Polymorphic types and
-Wdeprecated-copy-dtor
(2023-05-05) classical-polymorphism compiler-diagnostics cpplang-slack llvm -
Most C++ constructors should be
explicit
(2023-04-08) constructors initialization initializer-list library-design - The jargon treadmill (2023-02-04) etymology linguistics rant
- Prefer core-language features over library facilities (2022-10-16) c++-learner-track concepts coroutines rant
- To enable ADL, add a using-declaration (2022-04-30) argument-dependent-lookup customization-points library-design name-lookup paradigm-shift
-
const
all the things? (2022-01-23) antipatterns holy-wars pitfalls -
view_interface
types are boolean-testable (2021-12-06) ranges today-i-learned -
Three reasons to pass
std::string_view
by value (2021-11-09) c++-learner-track library-design parameter-only-types -
Don’t reopen
namespace std
(2021-10-27) antipatterns cppcon sd-8-adjacent slogans templates -
operator<=>
doesn’t obsolete the hidden friend idiom (2021-10-22) argument-dependent-lookup hidden-friend-idiom operator-spaceship stl-classic - Book Review: Fedor Pikus’ The Art of Writing Efficient Programs (2021-10-19) litclub
-
static constexpr unsigned long
is C++’s “lovely little old French whittling knife” (2021-04-03) c++-learner-track linguistics -
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 sd-8-adjacent 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) feature-test-macros
- 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) lambdas memes pearls preprocessor - 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) smart-pointers standard-library-trivia - Hiding template parameters from casual users (2018-05-09) templates
- Embedding quotes in strings (2018-04-27) pearls preprocessor 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 - Parameter-only types, Round 2 (2018-03-28) paradigm-shift parameter-only-types
-
std::string_view
is a parameter-only 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) concurrency exception-handling -
The “
unsigned
for value range” antipattern (2018-03-13) antipatterns rant undefined-behavior
castlequest (7)
- Nifty notebooks, and Almazar (2021-05-13) adventure digital-antiquaria
- An interview with Arthur O’Dwyer (2021-05-11) adventure digital-antiquaria help-wanted
- Observations on Castlequest’s code (2021-03-21) adventure digital-antiquaria
- Playing Castlequest (1980), Part 2 (2021-03-20) digital-antiquaria
- Playing Castlequest (1980), Part 1 (2021-03-19) adventure digital-antiquaria
- Making Castlequest compilable (2021-03-11) digital-antiquaria
- Castlequest exhumed! (2021-03-09) adventure digital-antiquaria
celebration-of-mind (16)
- Some St. Patrick’s Day math (2024-03-17) clement-wood litclub math
- Holiday puzzle: Anagrams modulo two (2023-12-24) puzzles
- Happy 109th birthday, Martin Gardner! (2023-10-21) math puzzles
- Space-filling polycube snakes (2023-06-27) math puzzles
- Triangular Tetris (2023-05-19) playable-games web
- Escheresque parquet deformations of an aperiodic monotile (2023-03-30) math pretty-pictures web
- Pangrams and Scrabblegrams (2023-01-02) clement-wood help-wanted old-shit puzzles typography
- Polycube snakes and ouroboroi (2022-11-18) coroutines math puzzles
- Kafka, math jokes, triangle dissection (2022-03-24) jokes litclub math
- Rolling 2d6 with playing cards (2021-10-21) etymology math puzzles today-i-learned
- Lineup for next week’s Celebration of Mind (2021-10-16) conferences math
- Lineup for next week’s Celebration of Mind (2021-04-15) conferences math
- The Box of Delights (2020-12-27) blog-roundup litclub weird-fiction
- 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 pretty-pictures typography web
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) adventure knuth litclub math puzzles web
cellular-automata (2)
- The Star Wars cellular automaton (2020-06-29) esolang pretty-pictures web
- A cellular automaton that makes beautiful little patterns (2019-07-27) digital-antiquaria esolang math pretty-pictures web
class-template-argument-deduction (9)
-
A deduction guide for
Foo(Ts..., Ts...)
(2023-05-26) cpplang-slack implementation-divergence metaprogramming variadic-templates -
Replacing
std::lock_guard
with a factory function (2022-12-14) concurrency exception-handling implementation-divergence library-design llvm templates war-stories -
Thoughts on
-Wctad-maybe-unsupported
(2022-10-07) compiler-diagnostics llvm proposal rant -
Beware CTAD on
reverse_iterator
(2022-08-02) pitfalls stl-classic war-stories -
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 sd-8-adjacent slogans
- Contra CTAD (2018-12-09) blog-roundup compiler-diagnostics llvm pitfalls
classical-polymorphism (16)
- A case study in not-quite-move-semantic library design (2024-04-18) library-design move-semantics
- Name lookup in multiple base classes (2024-04-17) c++-learner-track customization-points name-lookup
-
How
boost::is_base_of
matches private and/or ambiguous bases (2023-10-06) metaprogramming - Polymorphic types aren’t trivially relocatable (2023-06-24) proposal relocatability varna-2023
-
Polymorphic types and
-Wdeprecated-copy-dtor
(2023-05-05) c++-style compiler-diagnostics cpplang-slack llvm - Techniques for post-facto multiple inheritance (2022-12-01) library-design templates type-erasure
-
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) cpplang-slack rant
- 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 rant
clement-wood (4)
- Some St. Patrick’s Day math (2024-03-17) celebration-of-mind litclub math
- What I’m reading lately: Dogs and Wolfe (2023-07-01) blog-roundup litclub paradigm-shift
- Mathematical golf (2023-03-23) board-games math old-shit puzzles
- Pangrams and Scrabblegrams (2023-01-02) celebration-of-mind help-wanted old-shit puzzles typography
compile-time-performance (11)
- Sorting at compile time, part 2 (2024-02-20) benchmarks constexpr metaprogramming ranges
-
Sorting
integer_sequence
at compile time (2024-02-19) benchmarks constexpr metaprogramming ranges - Fun with quadratic pack-expansions (2023-08-05) constexpr cpplang-slack lambdas metaprogramming variadic-templates
-
Benchmarking Clang’s
-fbuiltin-std-forward
(2022-12-24) benchmarks cpplang-slack library-design llvm -
A compile-time benchmark for
enable_if
andrequires
, part 2 (2021-09-14) benchmarks concepts llvm metaprogramming -
A compile-time benchmark for
enable_if
andrequires
(2021-09-04) benchmarks concepts llvm metaprogramming -
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) benchmarks 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) benchmarks hyperrogue initializer-list pitfalls war-stories
compiler-diagnostics (20)
-
Why don’t compilers warn for
const T f()
? (2024-10-07) antipatterns c++-style llvm - The style guide must say how to do what you mustn’t do (2023-08-11) c++-style language-design library-design
-
Polymorphic types and
-Wdeprecated-copy-dtor
(2023-05-05) c++-style classical-polymorphism cpplang-slack llvm - Always read the first error message first (2023-01-21) c++-learner-track
-
Thoughts on
-Wctad-maybe-unsupported
(2022-10-07) class-template-argument-deduction llvm proposal rant - Two more musings on Clang diagnostics (2022-05-05) argument-dependent-lookup hidden-friend-idiom llvm templates
- A minimally interesting typo-bug (2022-01-29)
-
Another
requires
-clause syntax pitfall (2021-06-09) concepts cpplang-slack implementation-divergence pitfalls -
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 - Stopping the cascade of errors (2018-08-23) concepts metaprogramming pearls templates
- 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 (37)
- A small C++ meme dump (2023-06-17) c++-style cpplang-slack memes move-semantics relocatability stl-classic varna-2023
- Prefer core-language features over library facilities (2022-10-16) c++-learner-track c++-style coroutines rant
- Completeness preconditions considered harmful (2021-12-27) cpplang-slack implementation-divergence library-design metaprogramming pitfalls ranges
-
Is
path
convertible tostring_view
?: a war story (2021-11-21) llvm metaprogramming overload-resolution pitfalls war-stories - A class without a copy constructor (2021-09-17) cpplang-slack implementation-divergence implicit-move
-
A compile-time benchmark for
enable_if
andrequires
, part 2 (2021-09-14) benchmarks compile-time-performance llvm metaprogramming -
A compile-time benchmark for
enable_if
andrequires
(2021-09-04) benchmarks compile-time-performance llvm metaprogramming -
Another
requires
-clause syntax pitfall (2021-06-09) compiler-diagnostics cpplang-slack implementation-divergence pitfalls - Tag dispatch versus concept overloading (2021-06-07) metaprogramming templates
- A Night of Serious Drinking and operationalism (2021-06-04) litclub science
- 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 cpplang-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 rant - 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) compiler-diagnostics 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 value-semantics wg21
concurrency (9)
- Guard nouns or guard verbs? (2023-11-11) attributes exception-handling kona-2023 library-design mailing-list-quotes proposal
-
Replacing
std::lock_guard
with a factory function (2022-12-14) class-template-argument-deduction exception-handling implementation-divergence library-design llvm templates war-stories -
volatile
means it really happens (2022-01-28) antipatterns c++-learner-track slogans - “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 mailing-list-quotes
-
Using
future_error
for control flow (2018-03-13) c++-style exception-handling
conferences (22)
- The 2024 Google Summer of Code idea lists are out (2024-03-05) relocatability
- Google Timer is dead; long live BigTimer (2022-07-25) rant web
- C++ Pub Quiz at CppCon 2021, Game Two (2021-10-29) cppcon
- C++ Pub Quiz at CppCon 2021, Game One (2021-10-28) cppcon
- Back to Basics at CppCon 2021 (2021-10-21) cppcon
- Lineup for next week’s Celebration of Mind (2021-10-16) celebration-of-mind math
- C++ On Sea 2021 schedule announced (2021-05-27) cpp-on-sea training
- “Modern STL Programming” at C++ On Sea 2021 (2021-05-17) cpp-on-sea stl-classic training
- 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, Game One (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 cpplang-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
constexpr (9)
- Sorting at compile time, part 2 (2024-02-20) benchmarks compile-time-performance metaprogramming ranges
-
Sorting
integer_sequence
at compile time (2024-02-19) benchmarks compile-time-performance metaprogramming ranges -
constexpr std::string
update (2023-10-13) cpplang-slack library-design llvm -
Just how
constexpr
is C++20’sstd::string
? (2023-09-08) c++-learner-track cpplang-slack library-design - Fun with quadratic pack-expansions (2023-08-05) compile-time-performance cpplang-slack lambdas metaprogramming variadic-templates
-
An example where
inline constexpr
makes a difference (2022-07-08) cpplang-slack implementation-divergence llvm standard-library-trivia - Test an expression for constexpr-friendliness (2022-01-04) cpplang-slack implementation-divergence metaprogramming
-
The
FORCE_CONSTEXPR
macro (2018-08-07) pearls preprocessor sufficiently-smart-compiler - Perennial impossibilities of C++ (2018-06-12) language-design metaprogramming
constructors (10)
-
How the STL uses
explicit
(2024-06-25) initialization library-design st-louis-2024 standard-library-trivia -
Fun with
flat_map
’s non-explicit constructors (2023-04-28) cpplang-slack flat-containers initialization library-design standard-library-trivia -
Most C++ constructors should be
explicit
(2023-04-08) c++-style initialization initializer-list library-design - C++20’s parenthesized aggregate initialization has some downsides (2022-06-03) c++-learner-track cpplang-slack initialization pitfalls
- What is the virtual table table? (2019-09-30) classical-polymorphism
- The Knightmare of Initialization in C++ (2019-02-18) board-games initialization 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) initialization 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 value-semantics wg21
contracts (2)
- 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 (11)
- Escape analysis hates copy elision (2021-03-07) cpplang-slack implicit-move pitfalls proposal
- 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 (11)
- Happy birthday, Donald Knuth! and lamp-trolls (2023-01-10) knuth
- Polycube snakes and ouroboroi (2022-11-18) celebration-of-mind math puzzles
- Prefer core-language features over library facilities (2022-10-16) c++-learner-track c++-style concepts rant
-
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) cpplang-slack 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
cpp-on-sea (2)
- C++ On Sea 2021 schedule announced (2021-05-27) conferences training
- “Modern STL Programming” at C++ On Sea 2021 (2021-05-17) conferences stl-classic training
cppcon (25)
- Trivial, but not trivially default constructible (2024-04-02) language-design value-semantics
- Cryptic poems, Mahabharata, means of production (2021-11-18) blog-roundup morality movies poetry puzzles us-politics
- Overload arrangement puzzles (2021-10-29) overload-resolution puzzles
- C++ Pub Quiz at CppCon 2021, Game Two (2021-10-29) conferences
- C++ Pub Quiz at CppCon 2021, Game One (2021-10-28) conferences
-
Don’t reopen
namespace std
(2021-10-27) antipatterns c++-style sd-8-adjacent slogans templates - Back to Basics at CppCon 2021 (2021-10-21) conferences
-
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, Game One (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 smart-pointers - C++ Pub Quiz at CppCon 2019 (2019-09-21) conferences
- Seen on the CppCon whiteboard (2019-09-18) concepts conferences cpplang-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
cpplang-slack (42)
-
Why can’t I specialize
std::hash
inside my own namespace? (2024-07-15) name-lookup proposal templates -
Fun with “deducing
this
” lambdas (2024-01-23) lambdas name-lookup -
constexpr std::string
update (2023-10-13) constexpr library-design llvm -
Just how
constexpr
is C++20’sstd::string
? (2023-09-08) c++-learner-track constexpr library-design - Fun with quadratic pack-expansions (2023-08-05) compile-time-performance constexpr lambdas metaprogramming variadic-templates
- A small C++ meme dump (2023-06-17) c++-style concepts memes move-semantics relocatability stl-classic varna-2023
-
A deduction guide for
Foo(Ts..., Ts...)
(2023-05-26) class-template-argument-deduction implementation-divergence metaprogramming variadic-templates -
Polymorphic types and
-Wdeprecated-copy-dtor
(2023-05-05) c++-style classical-polymorphism compiler-diagnostics llvm -
Fun with
flat_map
’s non-explicit constructors (2023-04-28) constructors flat-containers initialization library-design standard-library-trivia -
Iterating and inverting a const
views::filter
(2023-03-13) pearls ranges -
Benchmarking Clang’s
-fbuiltin-std-forward
(2022-12-24) benchmarks compile-time-performance library-design llvm - API design advice from Anakin and Obi-Wan (2022-12-17) library-design memes
-
An example where
inline constexpr
makes a difference (2022-07-08) constexpr implementation-divergence llvm standard-library-trivia -
void
versus[[noreturn]]
(2022-06-29) c++-learner-track litclub - C++20’s parenthesized aggregate initialization has some downsides (2022-06-03) c++-learner-track constructors initialization pitfalls
- PSA: ADL requires that unqualified lookup has found a function (2022-04-14) argument-dependent-lookup customization-points library-design name-lookup pitfalls standard-library-trivia
-
TIL:
nullopt_t
is not equality-comparable, butmonostate
is (2022-03-07) ranges standard-library-trivia today-i-learned value-semantics - “Universal reference” or “forwarding reference”? (2022-02-02) c++-learner-track holy-wars memes
- Test an expression for constexpr-friendliness (2022-01-04) constexpr implementation-divergence metaprogramming
- Completeness preconditions considered harmful (2021-12-27) concepts implementation-divergence library-design metaprogramming pitfalls ranges
- A class without a copy constructor (2021-09-17) concepts implementation-divergence implicit-move
-
Another
requires
-clause syntax pitfall (2021-06-09) compiler-diagnostics concepts implementation-divergence pitfalls - Overly interoperable libraries, part 3 (2021-05-26) argument-dependent-lookup library-design metaprogramming
- Overly interoperable libraries, part 2 (2021-05-22) implementation-divergence metaprogramming
- A metaprogramming puzzle: Overly interoperable libraries (2021-05-19) metaprogramming
- 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 hidden-friend-idiom 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
- C++2a Coroutines and dangling references (2019-07-10) coroutines parameter-only-types pitfalls
- Roll for member functions (2018-07-09) memes
- First post — Jekyll Now (2018-03-13) how-to web
cppnow (13)
- Cratylus on choosing good names (2021-07-15) etymology library-design litclub naming old-shit
- Removing an empty base class can break ABI (2021-05-07) llvm standard-library-trivia
- Semantically ordered arguments should be lexically ordered too (2021-05-05) library-design rant standard-library-trivia
-
P2266’s interaction with
decltype(auto)
(2021-05-04) implicit-move proposal - 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) benchmarks library-design parameter-only-types - MSVC can’t handle move-only exception types (2019-05-11) exception-handling move-semantics msvc pitfalls relocatability
-
On
function_ref
andstring_view
(2019-05-10) library-design parameter-only-types pitfalls type-erasure value-semantics - 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 (9)
- Name lookup in multiple base classes (2024-04-17) c++-learner-track classical-polymorphism name-lookup
- To enable ADL, add a using-declaration (2022-04-30) argument-dependent-lookup c++-style library-design name-lookup paradigm-shift
- PSA: ADL requires that unqualified lookup has found a function (2022-04-14) argument-dependent-lookup cpplang-slack library-design name-lookup pitfalls standard-library-trivia
- 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
data-structures (6)
-
Boost.Interprocess, and
sg14::inplace_vector
(2024-08-23) allocators proposal relocatability sg14 stl-classic -
noexcept
affects libstdc++’sunordered_set
(2024-08-16) benchmarks exception-handling standard-library-trivia stl-classic triviality - Computing OEIS A360447 (2023-03-05) math
-
unordered_multiset
’s API affects its big-O (2022-06-23) benchmarks library-design standard-library-trivia stl-classic - The Fishspear priority queue algorithm (2021-05-23) knuth stl-classic
-
std::priority_queue
is missing an operation (2018-04-27) benchmarks library-design proposal
digital-antiquaria (19)
- In search of Adventure ]I[ (1981-ish) (2023-01-09) help-wanted
- Playing The Search for Almazar (1981) (2022-08-13) adventure
- Evasive Maneuvers (1994) (2021-10-08) playable-games web
- Play The Search for Almazar online (2021-05-16) adventure playable-games web
- Nifty notebooks, and Almazar (2021-05-13) adventure castlequest
- An interview with Arthur O’Dwyer (2021-05-11) adventure castlequest help-wanted
- Observations on Castlequest’s code (2021-03-21) adventure castlequest
- Playing Castlequest (1980), Part 2 (2021-03-20) castlequest
- Playing Castlequest (1980), Part 1 (2021-03-19) adventure castlequest
- Making Castlequest compilable (2021-03-11) castlequest
- Castlequest exhumed! (2021-03-09) adventure castlequest
- Adventure 448 (SWEN0448): All the easter eggs (2021-02-27) adventure
- Decompiling GOET0580 (2020-06-30) adventure esolang
- A bug in Adventure’s endgame (2020-02-06) adventure knuth war-stories
- Dragonflight, and running DosBox in the browser (2019-08-11) playable-games web
- A cellular automaton that makes beautiful little patterns (2019-07-27) cellular-automata esolang math pretty-pictures web
- Making floppy disk images under OS X (2019-07-26) how-to sre
- Colossal Cave Adventure: open world challenge (2019-01-28) adventure puzzles web
- Happy birthday, Don Woods (2018-04-30) adventure board-games knuth
esolang (10)
- Ed Catmur’s Triliteral esolang (2024-03-31) typography
- A better 404 polyglot (2020-12-23)
- Decompiling GOET0580 (2020-06-30) adventure digital-antiquaria
- The Star Wars cellular automaton (2020-06-29) cellular-automata pretty-pictures web
- Two approaches to secret sharing: math vs. blockchain (2020-02-12) math pearls
- The Story of Mel (2020-01-05) litclub poetry war-stories
- Church booleans in Befunge-98 (2019-08-24)
- A cellular automaton that makes beautiful little patterns (2019-07-27) cellular-automata digital-antiquaria math pretty-pictures web
- Befunge and Flobnar (2019-05-02)
- Chinese fonts, and METAFONT (2018-04-15) blog-roundup knuth typography
etymology (9)
- The little bird attacks the snake (2024-08-26) adventure litclub old-shit
- -Ought words (2023-02-20) litclub old-shit poetry today-i-learned
- The jargon treadmill (2023-02-04) c++-style linguistics rant
- Rolling 2d6 with playing cards (2021-10-21) celebration-of-mind math puzzles today-i-learned
- Cratylus on choosing good names (2021-07-15) cppnow library-design litclub naming old-shit
- 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 (21)
-
noexcept
affects libstdc++’sunordered_set
(2024-08-16) benchmarks data-structures standard-library-trivia stl-classic triviality -
std::try_cast
and(const&&)=delete
(2024-07-03) library-design smart-pointers st-louis-2024 -
Feature requests for the
Auto
macro (2024-02-14) lambdas preprocessor - How to type-pun via catching by non-const reference (2023-11-17) implementation-divergence
- How my papers did at Kona (2023-11-12) attributes implicit-move initializer-list kona-2023 lambdas library-design proposal relocatability stl-classic value-semantics wg21
- Guard nouns or guard verbs? (2023-11-11) attributes concurrency kona-2023 library-design mailing-list-quotes proposal
- Trivial functions can still be non-nothrow (modulo compiler bugs) (2023-04-17) implementation-divergence
-
Replacing
std::lock_guard
with a factory function (2022-12-14) class-template-argument-deduction concurrency implementation-divergence library-design llvm templates war-stories -
A “pick two” triangle for
std::vector
(2022-09-30) move-semantics stl-classic - What is the “vector pessimization”? (2022-08-26) c++-learner-track move-semantics pitfalls stl-classic
-
Type-erased
InplaceUniquePrintable
benefits fromnoexcept
(2022-07-30) llvm pearls relocatability type-erasure -
Optimizing
string::append
is harder than it looks (2021-04-17) llvm rant standard-library-trivia war-stories - 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 move-semantics msvc 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 concurrency
feature-test-macros (2)
- A note on feature-test macros (2024-02-06) wg21
- C++2a idioms for library feature detection (2018-10-26) c++-style
flat-containers (8)
-
Implementation divergence with a moved-from
set
comparator (2023-05-10) implementation-divergence standard-library-trivia stl-classic wg21 -
Fun with
flat_map
’s non-explicit constructors (2023-04-28) constructors cpplang-slack initialization library-design standard-library-trivia -
Making
priority_queue
andflat_set
work with move-only types (2023-03-01) library-design llvm move-semantics relocatability stl-classic - Fetishizing class invariants (2019-02-24) kona-2019 library-design metaprogramming standard-library-trivia
-
Quick and unscientific
trivially_relocatable
benchmark (2019-02-12) benchmarks kona-2019 relocatability -
C++ idiom of the day:
arrow_proxy
(2019-02-06) library-design metaprogramming pearls -
Contra P0429R6
flat_map
(2019-01-29) kona-2019 library-design sg14 wg21 -
Hot takes on
flat_map
,resize_default_init
, andranges::to
(2019-01-28) kona-2019 rant wg21
food (7)
- Acorns and honey in the Golden Age (2023-12-26) litclub old-shit
- A Dissertation Upon Roast Pig (1822) (2023-11-20) litclub old-shit poetry
- Map of NYC Michelin stars, 2023 (2023-11-08) web
- Map of NYC Michelin stars, 2022 (2022-10-25) web
- The humble potato (2022-04-25) litclub old-shit
- Booth bits; modern cuisine (2019-03-28) old-shit poetry
- Map of NYC Michelin stars, 2019 (2019-03-26) web
gilbert-and-sullivan (5)
- Issachar Styrke’s Alcestis Burlesqued (2022-10-24) alcestis litclub old-shit poetry
- Notes on Sonia Greene’s Alcestis (2022-10-23) alcestis litclub old-shit weird-fiction
- 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
git (1)
help-wanted (6)
- Tangent circles of integer radius (2024-06-10) math pretty-pictures puzzles
- Help wanted: Compile your codebase with P1144 and P2786 relocatability! (2024-04-10) llvm proposal relocatability wg21
-
Trivial relocation,
std::swap
, and a $2000 prize (2023-02-24) relocatability value-semantics wg21 - In search of Adventure ]I[ (1981-ish) (2023-01-09) digital-antiquaria
- Pangrams and Scrabblegrams (2023-01-02) celebration-of-mind clement-wood old-shit puzzles typography
- An interview with Arthur O’Dwyer (2021-05-11) adventure castlequest digital-antiquaria
hidden-friend-idiom (5)
- Two more musings on Clang diagnostics (2022-05-05) argument-dependent-lookup compiler-diagnostics llvm templates
-
A note on
namespace __cpo
(2021-12-07) library-design llvm ranges war-stories -
operator<=>
doesn’t obsolete the hidden friend idiom (2021-10-22) argument-dependent-lookup c++-style operator-spaceship stl-classic - Implementation divergence on swapping bools within vectors (2021-06-27) argument-dependent-lookup implementation-divergence stl-classic templates
- An example of the Barton–Nackman trick (2020-12-09) argument-dependent-lookup cpplang-slack stl-classic templates
holy-wars (3)
- “Universal reference” or “forwarding reference”? (2022-02-02) c++-learner-track cpplang-slack memes
-
const
all the things? (2022-01-23) antipatterns c++-style pitfalls -
West
const
(2018-03-15) memes
homeworlds (9)
- Antisocial Homeworlds, and a solitaire challenge (2021-04-04) board-games puzzles
- Homeworlds: Analysis of an Opening Gambit (2021-02-21) board-games
- Homeworlds Puzzle: Mercury in Retrograde (2020-10-28) board-games puzzles
- Homeworlds Puzzle: Burnt Umber (2020-10-25) board-games puzzles
- Homeworlds Puzzle: The Prestige (2020-06-16) board-games puzzles
- Homeworlds Puzzle: War Games (2020-05-30) board-games puzzles
- Homeworlds Puzzle: Mini Doomsday Machine (2020-05-29) board-games puzzles web
- Homeworlds: The Yellowbird Mistake, Part II (2018-09-15) board-games
- Homeworlds: The Yellowbird Mistake (2018-09-10) board-games
how-to (15)
- Kotlin AssertJ cheat sheet (2023-07-28) kotlin
-
std::format
from scratch, part 3 (2023-04-23) library-design std-format -
std::format
from scratch, part 2 (2023-04-22) library-design std-format -
std::format
from scratch, part 1 (2023-04-21) library-design std-format - The game of Zendo (2022-11-13) board-games
- The game of “Contact” (2021-11-12) board-games
-
Bit patterns of
float
(2021-09-05) math operator-spaceship pretty-pictures - Flavors of Base64 encoding (2020-11-17) kotlin 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) digital-antiquaria 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) cpplang-slack web
hyperrogue (6)
- Infinite Craft (2024-02-08) playable-games web
- 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) benchmarks 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
image-processing (2)
- Image rotation by three affine transformations (2021-11-26) math pretty-pictures web
- Image rotation by shifting pixels (2021-11-13) pretty-pictures web
implementation-divergence (40)
- Types that falsely advertise trivial copyability (2024-05-15) metaprogramming pitfalls proposal triviality type-traits
- How to type-pun via catching by non-const reference (2023-11-17) exception-handling
- How “static storage for initializers” did at Varna (2023-07-05) initializer-list llvm varna-2023
- P1144 PMR koans (2023-06-03) allocators relocatability value-semantics varna-2023 wg21
-
A deduction guide for
Foo(Ts..., Ts...)
(2023-05-26) class-template-argument-deduction cpplang-slack metaprogramming variadic-templates -
Implementation divergence with a moved-from
set
comparator (2023-05-10) flat-containers standard-library-trivia stl-classic wg21 - Trivial functions can still be non-nothrow (modulo compiler bugs) (2023-04-17) exception-handling
- How my papers did at Issaquah (2023-02-17) initializer-list llvm relocatability sg14 wg21
- Hash-colliding string literals on MSVC (2022-12-31) msvc
-
Replacing
std::lock_guard
with a factory function (2022-12-14) class-template-argument-deduction concurrency exception-handling library-design llvm templates war-stories - Bit-vector manipulations in standard C++ (2022-11-05) benchmarks llvm standard-library-trivia stl-classic
- Fun with lifetime-extended results of assignment (2022-07-09) lifetime-extension
-
An example where
inline constexpr
makes a difference (2022-07-08) constexpr cpplang-slack llvm standard-library-trivia -
What if
vector<T>::iterator
were justT*
? (2022-03-03) argument-dependent-lookup library-design llvm stl-classic - Test an expression for constexpr-friendliness (2022-01-04) constexpr cpplang-slack metaprogramming
- Completeness preconditions considered harmful (2021-12-27) concepts cpplang-slack library-design metaprogramming pitfalls ranges
- A class without a copy constructor (2021-09-17) concepts cpplang-slack implicit-move
-
An
iterator
IS-NOT-Aconst_iterator
(2021-07-14) antipatterns library-design stl-classic - Implementation divergence on swapping bools within vectors (2021-06-27) argument-dependent-lookup hidden-friend-idiom stl-classic templates
-
Another
requires
-clause syntax pitfall (2021-06-09) compiler-diagnostics concepts cpplang-slack pitfalls - Overly interoperable libraries, part 2 (2021-05-22) cpplang-slack metaprogramming
-
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) cpplang-slack language-design name-lookup 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 (6)
- How my papers did at Kona (2023-11-12) attributes exception-handling initializer-list kona-2023 lambdas library-design proposal relocatability stl-classic value-semantics wg21
- A class without a copy constructor (2021-09-17) concepts cpplang-slack implementation-divergence
- Field-testing P2266 “Simpler Implicit Move” (2021-08-07) llvm proposal
-
P2266’s interaction with
decltype(auto)
(2021-05-04) cppnow proposal -
Does
throw x
implicit-move? Let’s ask SFINAE (2021-03-18) implementation-divergence - Escape analysis hates copy elision (2021-03-07) copy-elision cpplang-slack pitfalls proposal
initialization (7)
-
How the STL uses
explicit
(2024-06-25) constructors library-design st-louis-2024 standard-library-trivia - PSA: Value-initialization is not merely default-construction (2023-06-22) language-design metaprogramming proposal varna-2023
-
Fun with
flat_map
’s non-explicit constructors (2023-04-28) constructors cpplang-slack flat-containers library-design standard-library-trivia -
Most C++ constructors should be
explicit
(2023-04-08) c++-style constructors initializer-list library-design - C++20’s parenthesized aggregate initialization has some downsides (2022-06-03) c++-learner-track constructors cpplang-slack pitfalls
- The Knightmare of Initialization in C++ (2019-02-18) board-games constructors language-design rant
- Is your constructor an object-factory or a type-conversion? (2018-06-21) constructors library-design rant
initializer-list (8)
- How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move kona-2023 lambdas library-design proposal relocatability stl-classic value-semantics wg21
- How “static storage for initializers” did at Varna (2023-07-05) implementation-divergence llvm varna-2023
-
Most C++ constructors should be
explicit
(2023-04-08) c++-style constructors initialization library-design - How my papers did at Issaquah (2023-02-17) implementation-divergence llvm relocatability sg14 wg21
-
P1967
#embed
and D2752 “Static storage forinitializer_list
” are now on Compiler Explorer (2023-01-13) llvm parameter-only-types preprocessor proposal wg21 -
std::span
should have a converting constructor frominitializer_list
(2021-10-03) llvm parameter-only-types proposal wg21 - 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) benchmarks compile-time-performance hyperrogue pitfalls war-stories
jacksonville-2018 (3)
- Namespaces for UDLs (2018-03-21) proposal wg21
- P0732R0 and “trivially comparable” (2018-03-19) language-design naming operator-spaceship templates triviality value-semantics wg21
- Hot take: P0947R0 “Another take on Modules” (2018-03-14) language-design modules rant wg21
jokes (18)
- What I’m reading lately: Greppability, Hebb’s dictum (2024-10-15) blog-roundup sre
- Because Internet (2019) (2024-06-19) linguistics litclub memes typography
- Succession joke chyrons (2023-09-26) television transcription us-politics
- Themistocles and Alexander (2023-06-07) litclub old-shit
- The epitaph of Adrian’s horse (2023-03-22) blog-roundup litclub old-shit poetry weird-fiction
- What I’m reading lately: tunnel edition (2022-11-12) blog-roundup linguistics litclub math old-shit us-politics
- Style Invitational Week 1509: Two-Reelers (2022-11-03)
- Larson wine limericks (2022-03-30)
- Kafka, math jokes, triangle dissection (2022-03-24) celebration-of-mind litclub math
- Birdle (2022-02-20) music playable-games web wordle
- The economist’s $100 bill, and the virtue of consistency (2022-01-20) slogans sre
- The peasants are revolting (2021-09-30) litclub math
- 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 (12)
- Make things simpler than possible (2024-08-04) old-shit poetry training
- The algebraic structure of Infinite Craft (2024-03-03) math web
- Happy birthday, Donald Knuth! and lamp-trolls (2023-01-10) coroutines
- Two old crosswords of mine (2021-08-24) puzzles typography
- The Fishspear priority queue algorithm (2021-05-23) data-structures stl-classic
- 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 digital-antiquaria 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 digital-antiquaria
- Chinese fonts, and METAFONT (2018-04-15) blog-roundup esolang typography
kona-2019 (11)
- How my papers did at Kona (2019-03-20) operator-spaceship relocatability wg21
- Thoughts on P1306 “Expansion Statements” (2019-02-28) language-design metaprogramming variadic-templates
- Fetishizing class invariants (2019-02-24) flat-containers 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) benchmarks flat-containers relocatability - Packs of packs (2019-02-11) language-design metaprogramming variadic-templates
- Hot takes on P1452, P1470, P0408, and P0843 (2019-02-03) concepts library-design rant wg21
-
Contra P0429R6
flat_map
(2019-01-29) flat-containers library-design sg14 wg21 -
Hot takes on
flat_map
,resize_default_init
, andranges::to
(2019-01-28) flat-containers rant wg21
kona-2023 (2)
- How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list lambdas library-design proposal relocatability stl-classic value-semantics wg21
- Guard nouns or guard verbs? (2023-11-11) attributes concurrency exception-handling library-design mailing-list-quotes proposal
kotlin (2)
lambdas (7)
-
Feature requests for the
Auto
macro (2024-02-14) exception-handling preprocessor -
Fun with “deducing
this
” lambdas (2024-01-23) cpplang-slack name-lookup - How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list kona-2023 library-design proposal relocatability stl-classic value-semantics wg21
- Fun with quadratic pack-expansions (2023-08-05) compile-time-performance constexpr cpplang-slack metaprogramming variadic-templates
-
Tips re
operator()
(2020-12-12) c++-style metaprogramming rant -
When is
*x
also&x
? (2020-03-31) c++-learner-track slogans