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 (7)
-
Should
std::expected
be[[nodiscard]]
? (2024-12-08) exception-handling nodiscard proposal - 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 nodiscard - 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 (40)
- The Elements of Programming Style (1974) (2024-11-27) c++-style litclub rant slogans
- 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 (54)
- The Elements of Programming Style (1974) (2024-11-27) blog-roundup litclub rant slogans
-
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 nodiscard
- 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) nodiscard 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 (17)
- Martin Gardner Scientific American Index; Rule 110 challenge (2024-10-21) cellular-automata
- 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 (3)
- Martin Gardner Scientific American Index; Rule 110 challenge (2024-10-21) celebration-of-mind
- 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 (21)
-
Field-testing
-Wassign-to-class-rvalue
(2024-12-13) llvm nodiscard proposal -
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 nodiscard
-
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 nodiscard - 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 (14)
-
Shifting objects by less than
sizeof(T)
(2024-11-08) data-structures relocatability sg14 - 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 (7)
-
Shifting objects by less than
sizeof(T)
(2024-11-08) cppnow relocatability sg14 -
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 (11)
- Labeled loop syntax in many languages (2024-12-20) language-design proposal wg21
- 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 (22)
-
Should
std::expected
be[[nodiscard]]
? (2024-12-08) attributes nodiscard proposal -
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 (7)
- Wolf (1906) on the false Quijotes of Avellaneda and Lesage (2024-11-02) litclub old-shit transcription
- 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 (41)
-
When
ranges::for_each
behaves differently fromfor
(2024-12-09) library-design ranges standard-library-trivia - 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 -
The
Auto
macro (2018-08-11) c++-style memes pearls preprocessor
language-design (22)
- Labeled loop syntax in many languages (2024-12-20) esolang proposal wg21
- How my papers did at St Louis (2024-06-30) proposal relocatability st-louis-2024 stl-classic triviality wg21
- Trivial, but not trivially default constructible (2024-04-02) cppcon value-semantics
- The style guide must say how to do what you mustn’t do (2023-08-11) c++-style compiler-diagnostics library-design nodiscard
- PSA: Value-initialization is not merely default-construction (2023-06-22) initialization metaprogramming proposal varna-2023
-
Should the compiler sometimes reject a
[[trivially_relocatable]]
warrant? (2023-03-10) library-design relocatability wg21 -
while (auto x=y; z)
(2020-10-28) cpplang-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) cpplang-slack implementation-divergence name-lookup templates today-i-learned
- Thoughts on P1306 “Expansion Statements” (2019-02-28) kona-2019 metaprogramming variadic-templates
- The Knightmare of Initialization in C++ (2019-02-18) board-games constructors initialization rant
- Packs of packs (2019-02-11) kona-2019 metaprogramming variadic-templates
-
requires
-expression grammar trivia (2019-01-17) concepts rant - Perennial impossibilities of C++ (2018-06-12) constexpr metaprogramming
- 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 triviality value-semantics 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
lego (2)
- Lego polycube snakes (2022-12-11) math pretty-pictures puzzles
- Prince Rupert’s Lego Cube (2019-07-23) math pretty-pictures science
library-design (77)
-
When
ranges::for_each
behaves differently fromfor
(2024-12-09) implementation-divergence ranges standard-library-trivia -
std::try_cast
and(const&&)=delete
(2024-07-03) exception-handling smart-pointers st-louis-2024 -
How the STL uses
explicit
(2024-06-25) constructors initialization st-louis-2024 standard-library-trivia - A case study in not-quite-move-semantic library design (2024-04-18) classical-polymorphism move-semantics
- How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list kona-2023 lambdas proposal relocatability stl-classic value-semantics wg21
- Guard nouns or guard verbs? (2023-11-11) attributes concurrency exception-handling kona-2023 mailing-list-quotes proposal
-
Quuxplusone/SG14
now hasinplace_vector
(2023-10-20) allocators proposal relocatability sg14 standard-library-trivia -
constexpr std::string
update (2023-10-13) constexpr cpplang-slack llvm -
Just how
constexpr
is C++20’sstd::string
? (2023-09-08) c++-learner-track constexpr cpplang-slack - Some C++20 ranges aren’t const-iterable (2023-08-13) pitfalls ranges
- The style guide must say how to do what you mustn’t do (2023-08-11) c++-style compiler-diagnostics language-design nodiscard
-
Socrates on why there’s no
erase_if
forspan
(2023-07-16) parameter-only-types -
Fun with
flat_map
’s non-explicit constructors (2023-04-28) constructors cpplang-slack flat-containers initialization standard-library-trivia -
std::format
from scratch, part 3 (2023-04-23) how-to std-format -
std::format
from scratch, part 2 (2023-04-22) how-to std-format -
std::format
from scratch, part 1 (2023-04-21) how-to std-format -
Most C++ constructors should be
explicit
(2023-04-08) c++-style constructors initialization initializer-list -
Should the compiler sometimes reject a
[[trivially_relocatable]]
warrant? (2023-03-10) language-design relocatability wg21 - STL algorithms for trivial relocation (2023-03-03) relocatability stl-classic wg21
-
Making
priority_queue
andflat_set
work with move-only types (2023-03-01) flat-containers llvm move-semantics relocatability stl-classic -
Benchmarking Clang’s
-fbuiltin-std-forward
(2022-12-24) benchmarks compile-time-performance cpplang-slack llvm - API design advice from Anakin and Obi-Wan (2022-12-17) cpplang-slack memes
-
Replacing
std::lock_guard
with a factory function (2022-12-14) class-template-argument-deduction concurrency exception-handling implementation-divergence llvm templates war-stories - Techniques for post-facto multiple inheritance (2022-12-01) classical-polymorphism templates type-erasure
-
unordered_multiset
’s API affects its big-O (2022-06-23) benchmarks data-structures standard-library-trivia stl-classic - To enable ADL, add a using-declaration (2022-04-30) argument-dependent-lookup c++-style customization-points name-lookup paradigm-shift
- PSA: ADL requires that unqualified lookup has found a function (2022-04-14) argument-dependent-lookup cpplang-slack customization-points name-lookup pitfalls standard-library-trivia
-
What if
vector<T>::iterator
were justT*
? (2022-03-03) argument-dependent-lookup implementation-divergence llvm stl-classic - Completeness preconditions considered harmful (2021-12-27) concepts cpplang-slack implementation-divergence metaprogramming pitfalls ranges
-
A note on
namespace __cpo
(2021-12-07) hidden-friend-idiom llvm ranges war-stories -
A footnote on “Three reasons to pass
std::string_view
by value” (2021-11-19) parameter-only-types -
Three reasons to pass
std::string_view
by value (2021-11-09) c++-learner-track c++-style parameter-only-types -
What
=delete
means (2021-10-17) argument-dependent-lookup c++-learner-track -
Don’t explicitly instantiate
std
templates (2021-08-06) pitfalls sd-8-adjacent - Cratylus on choosing good names (2021-07-15) cppnow etymology litclub naming old-shit
-
An
iterator
IS-NOT-Aconst_iterator
(2021-07-14) antipatterns implementation-divergence stl-classic - Overly interoperable libraries, part 3 (2021-05-26) argument-dependent-lookup cpplang-slack metaprogramming
- Semantically ordered arguments should be lexically ordered too (2021-05-05) cppnow rant standard-library-trivia
-
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) benchmarks cppnow parameter-only-types -
On
function_ref
andstring_view
(2019-05-10) cppnow parameter-only-types pitfalls type-erasure value-semantics - 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) flat-containers kona-2019 metaprogramming standard-library-trivia
-
compressed_vector_traits
(2019-02-16) metaprogramming -
C++ idiom of the day:
arrow_proxy
(2019-02-06) flat-containers 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) flat-containers kona-2019 sg14 wg21 -
nodiscard
philosophies (2019-01-25) attributes compiler-diagnostics nodiscard - 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 sd-8-adjacent 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 rant -
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 initialization 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 - View types with metadata cause problems (2018-05-30) parameter-only-types pitfalls sg14 wg21
- Contra locales (2018-04-30) concurrency mailing-list-quotes
-
std::priority_queue
is missing an operation (2018-04-27) benchmarks data-structures proposal - Customization point design for library functions (2018-03-19) argument-dependent-lookup customization-points memes templates
lifetime-extension (6)
- Fun with lifetime-extended results of assignment (2022-07-09) implementation-divergence
- 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 parameter-only type (2018-03-27) c++-style paradigm-shift parameter-only-types pitfalls
linguistics (6)
- Because Internet (2019) (2024-06-19) jokes litclub memes typography
- Johnson’s definition of network (2024-04-05) litclub old-shit poetry
- The jargon treadmill (2023-02-04) c++-style etymology rant
- What I’m reading lately: tunnel edition (2022-11-12) blog-roundup jokes litclub math old-shit us-politics
-
static constexpr unsigned long
is C++’s “lovely little old French whittling knife” (2021-04-03) c++-learner-track c++-style - If English was written like Chinese (2018-07-13) blog-roundup typography
litclub (68)
- The Elements of Programming Style (1974) (2024-11-27) blog-roundup c++-style rant slogans
- Wolf (1906) on the false Quijotes of Avellaneda and Lesage (2024-11-02) help-wanted old-shit transcription
- The red right arm of Jove (2024-09-09) old-shit poetry
- The little bird attacks the snake (2024-08-26) adventure etymology old-shit
- Because Internet (2019) (2024-06-19) jokes linguistics memes typography
- The Mummy! (1827) (2024-04-08) old-shit science
- Johnson’s definition of network (2024-04-05) linguistics old-shit poetry
- Some St. Patrick’s Day math (2024-03-17) celebration-of-mind clement-wood math
- What I’m reading lately: Africa, liberty, economics (2024-01-12) blog-roundup morality science
- Acorns and honey in the Golden Age (2023-12-26) food old-shit
- A Dissertation Upon Roast Pig (1822) (2023-11-20) food old-shit poetry
- Origins and purposes (2023-10-18) morality old-shit
- What I’m reading lately: Dogs and Wolfe (2023-07-01) blog-roundup clement-wood paradigm-shift
- Themistocles and Alexander (2023-06-07) jokes old-shit
- The epitaph of Adrian’s horse (2023-03-22) blog-roundup jokes old-shit poetry weird-fiction
- -Ought words (2023-02-20) etymology old-shit poetry today-i-learned
- What I’m reading lately: tunnel edition (2022-11-12) blog-roundup jokes linguistics math old-shit us-politics
- Issachar Styrke’s Alcestis Burlesqued (2022-10-24) alcestis gilbert-and-sullivan old-shit poetry
- Notes on Sonia Greene’s Alcestis (2022-10-23) alcestis gilbert-and-sullivan old-shit weird-fiction
- Sonia Greene’s Alcestis (2022-10-22) alcestis old-shit transcription weird-fiction
- What I’m reading lately: Borges, Jung, Hitchcock (2022-09-24) blog-roundup movies
- What I’m reading lately: Scholar’s Stage, Popper, Grug (2022-07-26) blog-roundup science us-politics
-
void
versus[[noreturn]]
(2022-06-29) c++-learner-track cpplang-slack - Three Men Discuss Relativity (1926) (2022-06-17) old-shit paradigm-shift science
- Blessed nuns fret not at their narrow rooms (2022-05-23) music old-shit poetry
- Heavy Planet (2022-05-22) math this-should-exist
- The humble potato (2022-04-25) food old-shit
- Kafka, math jokes, triangle dissection (2022-03-24) celebration-of-mind jokes math
- The Fourth Dimension and the Bible (1922) (2021-11-05) math old-shit paradigm-shift web
- Book Review: Fedor Pikus’ The Art of Writing Efficient Programs (2021-10-19) c++-style
- The peasants are revolting (2021-09-30) jokes math
- Cratylus on choosing good names (2021-07-15) cppnow etymology library-design naming old-shit
- A Night of Serious Drinking and operationalism (2021-06-04) concepts science
- The Box of Delights (2020-12-27) blog-roundup celebration-of-mind 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 poetry 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 transcription
- 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) poetry
- Which in your case you have not got (2018-06-17) naming poetry today-i-learned
- The Description of a New World, Called The Blazing-World (1666) (2018-04-05) old-shit
llvm (42)
-
Field-testing
-Wassign-to-class-rvalue
(2024-12-13) compiler-diagnostics nodiscard proposal -
Why don’t compilers warn for
const T f()
? (2024-10-07) antipatterns c++-style compiler-diagnostics - Help wanted: Compile your codebase with P1144 and P2786 relocatability! (2024-04-10) help-wanted proposal relocatability wg21
-
constexpr std::string
update (2023-10-13) constexpr cpplang-slack library-design - How “static storage for initializers” did at Varna (2023-07-05) implementation-divergence initializer-list varna-2023
-
Polymorphic types and
-Wdeprecated-copy-dtor
(2023-05-05) c++-style classical-polymorphism compiler-diagnostics cpplang-slack -
Update on my trivial
swap
prize offer (2023-03-04) relocatability -
Making
priority_queue
andflat_set
work with move-only types (2023-03-01) flat-containers library-design move-semantics relocatability stl-classic - How my papers did at Issaquah (2023-02-17) implementation-divergence initializer-list relocatability sg14 wg21
-
P1967
#embed
and D2752 “Static storage forinitializer_list
” are now on Compiler Explorer (2023-01-13) initializer-list parameter-only-types preprocessor proposal wg21 -
Benchmarking Clang’s
-fbuiltin-std-forward
(2022-12-24) benchmarks compile-time-performance cpplang-slack library-design -
Replacing
std::lock_guard
with a factory function (2022-12-14) class-template-argument-deduction concurrency exception-handling implementation-divergence library-design templates war-stories - Bit-vector manipulations in standard C++ (2022-11-05) benchmarks implementation-divergence standard-library-trivia stl-classic
-
Thoughts on
-Wctad-maybe-unsupported
(2022-10-07) class-template-argument-deduction compiler-diagnostics proposal rant -
Type-erased
InplaceUniquePrintable
benefits fromnoexcept
(2022-07-30) exception-handling pearls relocatability type-erasure -
An example where
inline constexpr
makes a difference (2022-07-08) constexpr cpplang-slack implementation-divergence standard-library-trivia - Two more musings on Clang diagnostics (2022-05-05) argument-dependent-lookup compiler-diagnostics hidden-friend-idiom templates
-
What if
vector<T>::iterator
were justT*
? (2022-03-03) argument-dependent-lookup implementation-divergence library-design stl-classic - I sweded the LLVM Bugzilla migration (2021-12-11) sre web
-
A note on
namespace __cpo
(2021-12-07) hidden-friend-idiom library-design ranges war-stories -
Is
path
convertible tostring_view
?: a war story (2021-11-21) concepts metaprogramming overload-resolution pitfalls war-stories -
std::span
should have a converting constructor frominitializer_list
(2021-10-03) initializer-list parameter-only-types proposal wg21 -
A compile-time benchmark for
enable_if
andrequires
, part 2 (2021-09-14) benchmarks compile-time-performance concepts metaprogramming -
A compile-time benchmark for
enable_if
andrequires
(2021-09-04) benchmarks compile-time-performance concepts metaprogramming - Field-testing P2266 “Simpler Implicit Move” (2021-08-07) implicit-move proposal
- Removing an empty base class can break ABI (2021-05-07) cppnow standard-library-trivia
-
Optimizing
string::append
is harder than it looks (2021-04-17) exception-handling rant standard-library-trivia war-stories -
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) benchmarks 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
mailing-list-quotes (4)
- Andries Brouwer on the OOM killer (2024-08-22) blog-roundup sre
- Guard nouns or guard verbs? (2023-11-11) attributes concurrency exception-handling kona-2023 library-design proposal
-
Contra
char *argv[]
(2020-03-12) pitfalls rant - Contra locales (2018-04-30) concurrency library-design
math (54)
- Nash equilibria in Ballmer’s binary-search interview game (2024-09-04) puzzles
- Counting distinct n-state DFAs (2024-07-27) pretty-pictures
- Tangent circles of integer radius (2024-06-10) help-wanted pretty-pictures puzzles
- Reverse the List of Integers (2024-04-22) puzzles
- Some St. Patrick’s Day math (2024-03-17) celebration-of-mind clement-wood litclub
- The algebraic structure of Infinite Craft (2024-03-03) knuth web
- Pentoprimality (2024-01-15) pretty-pictures puzzles
- Happy 109th birthday, Martin Gardner! (2023-10-21) celebration-of-mind puzzles
- Space-filling polycube snakes (2023-06-27) celebration-of-mind puzzles
- Escheresque parquet deformations of an aperiodic monotile (2023-03-30) celebration-of-mind pretty-pictures web
- Mathematical golf (2023-03-23) board-games clement-wood old-shit puzzles
- Computing OEIS A360447 (2023-03-05) data-structures
- Milner’s lamp (2023-01-01) old-shit puzzles
- Lego polycube snakes (2022-12-11) lego pretty-pictures puzzles
- Polyomino strips, snakes, and ouroboroi (2022-12-08) pretty-pictures puzzles
- Polycube snakes and ouroboroi (2022-11-18) celebration-of-mind coroutines puzzles
- What I’m reading lately: tunnel edition (2022-11-12) blog-roundup jokes linguistics litclub old-shit us-politics
- Heavy Planet (2022-05-22) litclub this-should-exist
- Kafka, math jokes, triangle dissection (2022-03-24) celebration-of-mind jokes litclub
- Image rotation by three affine transformations (2021-11-26) image-processing pretty-pictures web
- The Fourth Dimension and the Bible (1922) (2021-11-05) litclub old-shit paradigm-shift web
- Rolling 2d6 with playing cards (2021-10-21) celebration-of-mind etymology puzzles today-i-learned
- Lineup for next week’s Celebration of Mind (2021-10-16) celebration-of-mind conferences
- The peasants are revolting (2021-09-30) jokes litclub
-
Bit patterns of
float
(2021-09-05) how-to operator-spaceship pretty-pictures - Two counterintuitive results (2021-08-12) puzzles science
- Buddhabrot (2021-07-27) pretty-pictures
- 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 pretty-pictures 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 digital-antiquaria esolang pretty-pictures web
- Prince Rupert’s Lego Cube (2019-07-23) lego pretty-pictures 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 (20)
- Because Internet (2019) (2024-06-19) jokes linguistics litclub typography
- A small C++ meme dump (2023-06-17) c++-style concepts cpplang-slack move-semantics relocatability stl-classic varna-2023
- API design advice from Anakin and Obi-Wan (2022-12-17) cpplang-slack library-design
- “Universal reference” or “forwarding reference”? (2022-02-02) c++-learner-track cpplang-slack holy-wars
- When your loop unroller works harder than your infinite loop detector (2021-02-26) cpplang-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) cpplang-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 lambdas pearls preprocessor - Roll for member functions (2018-07-09) cpplang-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 (54)
-
A
priority_tag
-like pattern for type-based metaprogramming (2024-07-07) templates type-traits - Types that falsely advertise trivial copyability (2024-05-15) implementation-divergence pitfalls proposal triviality type-traits
- Sorting at compile time, part 2 (2024-02-20) benchmarks compile-time-performance constexpr ranges
-
Sorting
integer_sequence
at compile time (2024-02-19) benchmarks compile-time-performance constexpr ranges -
How
boost::is_base_of
matches private and/or ambiguous bases (2023-10-06) classical-polymorphism - Fun with quadratic pack-expansions (2023-08-05) compile-time-performance constexpr cpplang-slack lambdas variadic-templates
- PSA: Value-initialization is not merely default-construction (2023-06-22) initialization language-design proposal varna-2023
-
A deduction guide for
Foo(Ts..., Ts...)
(2023-05-26) class-template-argument-deduction cpplang-slack implementation-divergence variadic-templates - Test an expression for constexpr-friendliness (2022-01-04) constexpr cpplang-slack implementation-divergence
- Completeness preconditions considered harmful (2021-12-27) concepts cpplang-slack implementation-divergence library-design pitfalls ranges
-
Is
path
convertible tostring_view
?: a war story (2021-11-21) concepts llvm overload-resolution pitfalls war-stories -
A compile-time benchmark for
enable_if
andrequires
, part 2 (2021-09-14) benchmarks compile-time-performance concepts llvm -
A compile-time benchmark for
enable_if
andrequires
(2021-09-04) benchmarks compile-time-performance concepts llvm -
Perfect forwarding call wrappers need
=delete
(2021-07-30) pitfalls -
priority_tag
for ad-hoc tag dispatch (2021-07-09) pearls templates - Tag dispatch versus concept overloading (2021-06-07) concepts templates
- Overly interoperable libraries, part 3 (2021-05-26) argument-dependent-lookup cpplang-slack library-design
- Overly interoperable libraries, part 2 (2021-05-22) cpplang-slack implementation-divergence
- A metaprogramming puzzle: Overly interoperable libraries (2021-05-19) cpplang-slack
-
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) cpplang-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 variadic-templates
- Fetishizing class invariants (2019-02-24) flat-containers 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 variadic-templates
-
C++ idiom of the day:
arrow_proxy
(2019-02-06) flat-containers 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) compiler-diagnostics 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
- Perennial impossibilities of C++ (2018-06-12) constexpr language-design
modules (3)
- 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 (17)
- What I’m reading lately: Africa, liberty, economics (2024-01-12) blog-roundup litclub science
- Origins and purposes (2023-10-18) litclub old-shit
- R.I.P. The OFloinn (2023-10-03) blog-roundup old-shit
- Cryptic poems, Mahabharata, means of production (2021-11-18) blog-roundup cppcon movies poetry puzzles us-politics
- 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 (16)
- A case study in not-quite-move-semantic library design (2024-04-18) classical-polymorphism library-design
- A small C++ meme dump (2023-06-17) c++-style concepts cpplang-slack memes relocatability stl-classic varna-2023
-
Making
priority_queue
andflat_set
work with move-only types (2023-03-01) flat-containers library-design llvm relocatability stl-classic -
A “pick two” triangle for
std::vector
(2022-09-30) exception-handling stl-classic - What is the “vector pessimization”? (2022-08-26) c++-learner-track exception-handling pitfalls stl-classic
-
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) benchmarks 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 smart-pointers
- MSVC can’t handle move-only exception types (2019-05-11) cppnow exception-handling msvc pitfalls relocatability
-
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 triviality value-semantics
- 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 (9)
- What I’m reading lately: Borges, Jung, Hitchcock (2022-09-24) blog-roundup litclub
- Cryptic poems, Mahabharata, means of production (2021-11-18) blog-roundup cppcon morality poetry puzzles us-politics
- 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 transcription
- 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 transcription us-politics
- Johnny Eck in Tarzan Escapes (2018-03-24) old-shit today-i-learned
msvc (3)
- Hash-colliding string literals on MSVC (2022-12-31) implementation-divergence
- MSVC can’t handle move-only exception types (2019-05-11) cppnow exception-handling move-semantics pitfalls relocatability
-
Exploring C++ types with
puts(__PRETTY_FUNCTION__)
(2018-08-22) pearls templates
music (5)
- Blessed nuns fret not at their narrow rooms (2022-05-23) litclub old-shit poetry
- Birdle (2022-02-20) jokes playable-games web wordle
- 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 (9)
-
Why can’t I specialize
std::hash
inside my own namespace? (2024-07-15) cpplang-slack proposal templates - Name lookup in multiple base classes (2024-04-17) c++-learner-track classical-polymorphism customization-points
-
Fun with “deducing
this
” lambdas (2024-01-23) cpplang-slack lambdas - To enable ADL, add a using-declaration (2022-04-30) argument-dependent-lookup c++-style customization-points library-design paradigm-shift
- PSA: ADL requires that unqualified lookup has found a function (2022-04-14) argument-dependent-lookup cpplang-slack customization-points library-design pitfalls standard-library-trivia
-
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) cpplang-slack implementation-divergence language-design templates today-i-learned
namespaces (1)
- How do C++ using-directives work? (2020-12-21) argument-dependent-lookup c++-learner-track name-lookup
naming (6)
- Cratylus on choosing good names (2021-07-15) cppnow etymology library-design litclub old-shit
-
inplace_foo
versusfixed_capacity_foo
(2018-06-18) library-design sg14 - Which in your case you have not got (2018-06-17) litclub poetry today-i-learned
- Default-constructibility is overrated (2018-05-10) concepts constructors rant templates value-semantics wg21
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 language-design operator-spaceship templates triviality value-semantics wg21
- Zoological case naming (2018-03-16) c++-style memes
networking (6)
- 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
nodiscard (5)
-
Field-testing
-Wassign-to-class-rvalue
(2024-12-13) compiler-diagnostics llvm proposal -
Should
std::expected
be[[nodiscard]]
? (2024-12-08) attributes exception-handling proposal - The style guide must say how to do what you mustn’t do (2023-08-11) c++-style compiler-diagnostics language-design library-design
-
nodiscard
philosophies (2019-01-25) attributes compiler-diagnostics library-design -
An argument pro liberal use of
[[nodiscard]]
(2018-11-06) c++-style pitfalls
old-shit (50)
- Wolf (1906) on the false Quijotes of Avellaneda and Lesage (2024-11-02) help-wanted litclub transcription
- The red right arm of Jove (2024-09-09) litclub poetry
- The little bird attacks the snake (2024-08-26) adventure etymology litclub
- Make things simpler than possible (2024-08-04) knuth poetry training
- Topsys & Turvys (1893) (2024-05-23) pretty-pictures transcription web
- The Mummy! (1827) (2024-04-08) litclub science
- Johnson’s definition of network (2024-04-05) linguistics litclub poetry
- Acorns and honey in the Golden Age (2023-12-26) food litclub
- A Dissertation Upon Roast Pig (1822) (2023-11-20) food litclub poetry
- Origins and purposes (2023-10-18) litclub morality
- R.I.P. The OFloinn (2023-10-03) blog-roundup morality
- Themistocles and Alexander (2023-06-07) jokes litclub
- Mathematical golf (2023-03-23) board-games clement-wood math puzzles
- The epitaph of Adrian’s horse (2023-03-22) blog-roundup jokes litclub poetry weird-fiction
- -Ought words (2023-02-20) etymology litclub poetry today-i-learned
- Pangrams and Scrabblegrams (2023-01-02) celebration-of-mind clement-wood help-wanted puzzles typography
- Milner’s lamp (2023-01-01) math puzzles
- Copy semantics, per Plato’s Sophist (2022-12-15) c++-learner-track value-semantics
- What I’m reading lately: tunnel edition (2022-11-12) blog-roundup jokes linguistics litclub math us-politics
- Issachar Styrke’s Alcestis Burlesqued (2022-10-24) alcestis gilbert-and-sullivan litclub poetry
- Notes on Sonia Greene’s Alcestis (2022-10-23) alcestis gilbert-and-sullivan litclub weird-fiction
- Sonia Greene’s Alcestis (2022-10-22) alcestis litclub transcription weird-fiction
- Three Men Discuss Relativity (1926) (2022-06-17) litclub paradigm-shift science
- Blessed nuns fret not at their narrow rooms (2022-05-23) litclub music poetry
- The humble potato (2022-04-25) food litclub
- The Fourth Dimension and the Bible (1922) (2021-11-05) litclub math paradigm-shift web
- Cratylus on choosing good names (2021-07-15) cppnow etymology library-design litclub naming
- 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 transcription
- 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 poetry
- 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 (1666) (2018-04-05) litclub
- The Demagogue in Politics (2018-04-03) movies transcription us-politics
- Johnny Eck in Tarzan Escapes (2018-03-24) movies today-i-learned
operator-spaceship (11)
-
Make
operator<=>
ignore a data member (2023-06-05) c++-style paradigm-shift pearls -
operator<=>
doesn’t obsolete the hidden friend idiom (2021-10-22) argument-dependent-lookup c++-style hidden-friend-idiom stl-classic -
Bit patterns of
float
(2021-09-05) how-to math pretty-pictures -
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 triviality value-semantics wg21
order-of-evaluation (1)
overload-resolution (3)
-
Refactoring with
=delete
(2022-11-11) c++-learner-track war-stories -
Is
path
convertible tostring_view
?: a war story (2021-11-21) concepts llvm metaprogramming pitfalls war-stories - Overload arrangement puzzles (2021-10-29) cppcon puzzles
paradigm-shift (12)
- What I’m reading lately: Dogs and Wolfe (2023-07-01) blog-roundup clement-wood litclub
-
Make
operator<=>
ignore a data member (2023-06-05) c++-style operator-spaceship pearls - Three Men Discuss Relativity (1926) (2022-06-17) litclub old-shit science
- To enable ADL, add a using-declaration (2022-04-30) argument-dependent-lookup c++-style customization-points library-design name-lookup
- The Fourth Dimension and the Bible (1922) (2021-11-05) litclub math old-shit web
- 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
- Parameter-only types, Round 2 (2018-03-28) c++-style parameter-only-types
-
std::string_view
is a parameter-only 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 (18)
-
Socrates on why there’s no
erase_if
forspan
(2023-07-16) library-design -
P1967
#embed
and D2752 “Static storage forinitializer_list
” are now on Compiler Explorer (2023-01-13) initializer-list llvm preprocessor proposal wg21 -
A footnote on “Three reasons to pass
std::string_view
by value” (2021-11-19) library-design -
Three reasons to pass
std::string_view
by value (2021-11-09) c++-learner-track c++-style library-design -
std::span
should have a converting constructor frominitializer_list
(2021-10-03) initializer-list llvm proposal wg21 - 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 smart-pointers - C++2a Coroutines and dangling references (2019-07-10) coroutines cpplang-slack pitfalls
-
MapView
can be faster thanMapRef
(2019-05-27) benchmarks cppnow library-design -
On
function_ref
andstring_view
(2019-05-10) cppnow library-design pitfalls type-erasure value-semantics -
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
- View types with metadata cause problems (2018-05-30) library-design pitfalls sg14 wg21
- Parameter-only types, Round 2 (2018-03-28) c++-style paradigm-shift
-
std::string_view
is a parameter-only type (2018-03-27) c++-style lifetime-extension paradigm-shift pitfalls
pearls (19)
- A neat technique for custom output iterators (2023-10-01) stl-classic today-i-learned
-
Make
operator<=>
ignore a data member (2023-06-05) c++-style operator-spaceship paradigm-shift -
Iterating and inverting a const
views::filter
(2023-03-13) cpplang-slack ranges - Simple C++20 input and output iterators (2023-01-27) stl-classic type-erasure
-
Type-erased
InplaceUniquePrintable
benefits fromnoexcept
(2022-07-30) exception-handling llvm relocatability type-erasure -
std::relocate
’s implementation is cute (2022-05-18) relocatability -
Underseeding
mt19937
; introducingxoshiro256ss
(2021-11-23) antipatterns random-numbers -
A macro for migrating to
static operator()
(2021-10-07) preprocessor proposal -
priority_tag
for ad-hoc tag dispatch (2021-07-09) metaprogramming templates -
Type-erased
UniquePrintable
andPrintableRef
(2020-11-24) cpplang-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) flat-containers library-design metaprogramming -
make_range
andreversed
(2018-08-29) ranges templates - Stopping the cascade of errors (2018-08-23) compiler-diagnostics concepts metaprogramming templates
-
Exploring C++ types with
puts(__PRETTY_FUNCTION__)
(2018-08-22) msvc templates -
The
Auto
macro (2018-08-11) c++-style lambdas memes preprocessor -
The
FORCE_CONSTEXPR
macro (2018-08-07) constexpr preprocessor sufficiently-smart-compiler - Embedding quotes in strings (2018-04-27) c++-style preprocessor war-stories
pitfalls (48)
- Types that falsely advertise trivial copyability (2024-05-15) implementation-divergence metaprogramming proposal triviality type-traits
- Some C++20 ranges aren’t const-iterable (2023-08-13) library-design ranges
- What is the “vector pessimization”? (2022-08-26) c++-learner-track exception-handling move-semantics stl-classic
-
Beware CTAD on
reverse_iterator
(2022-08-02) class-template-argument-deduction stl-classic war-stories - C++20’s parenthesized aggregate initialization has some downsides (2022-06-03) c++-learner-track constructors cpplang-slack initialization
- PSA: ADL requires that unqualified lookup has found a function (2022-04-14) argument-dependent-lookup cpplang-slack customization-points library-design name-lookup standard-library-trivia
-
const
all the things? (2022-01-23) antipatterns c++-style holy-wars - Completeness preconditions considered harmful (2021-12-27) concepts cpplang-slack implementation-divergence library-design metaprogramming ranges
-
Is
path
convertible tostring_view
?: a war story (2021-11-21) concepts llvm metaprogramming overload-resolution war-stories -
Don’t explicitly instantiate
std
templates (2021-08-06) library-design sd-8-adjacent -
Perfect forwarding call wrappers need
=delete
(2021-07-30) metaprogramming -
Another
requires
-clause syntax pitfall (2021-06-09) compiler-diagnostics concepts cpplang-slack implementation-divergence - Escape analysis hates copy elision (2021-03-07) copy-elision cpplang-slack implicit-move proposal
-
Don’t blindly prefer
emplace_back
topush_back
(2021-03-03) benchmarks 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) mailing-list-quotes rant -
Hidden
reinterpret_cast
s (2020-01-22) cpplang-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 smart-pointers
-
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 cpplang-slack parameter-only-types
- MSVC can’t handle move-only exception types (2019-05-11) cppnow exception-handling move-semantics msvc relocatability
-
On
function_ref
andstring_view
(2019-05-10) cppnow library-design parameter-only-types type-erasure value-semantics - 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) smart-pointers 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 sd-8-adjacent 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 rant - 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 nodiscard - 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 triviality 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) benchmarks 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
- View 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 parameter-only type (2018-03-27) c++-style lifetime-extension paradigm-shift parameter-only-types
playable-games (11)
- Playing A Serf’s Tale (1986) (2024-09-30) adventure
- Infinite Craft (2024-02-08) hyperrogue web
- Triangular Tetris (2023-05-19) celebration-of-mind web
- The game of Lielow (2022-09-02) board-games puzzles web
- Evirdle (2022-02-27) web wordle
- Birdle (2022-02-20) jokes music web wordle
- Evasive Maneuvers (1994) (2021-10-08) digital-antiquaria web
- Play The Search for Almazar online (2021-05-16) adventure digital-antiquaria web
- Phantoms vs Phantoms (Geister) (2020-08-22) board-games web
- Throwback Saturday: Three variants on 2048 (2019-11-16) web
- Dragonflight, and running DosBox in the browser (2019-08-11) digital-antiquaria web
poetry (13)
- The red right arm of Jove (2024-09-09) litclub old-shit
- Make things simpler than possible (2024-08-04) knuth old-shit training
- Johnson’s definition of network (2024-04-05) linguistics litclub old-shit
- A Dissertation Upon Roast Pig (1822) (2023-11-20) food litclub old-shit
- The epitaph of Adrian’s horse (2023-03-22) blog-roundup jokes litclub old-shit weird-fiction
- -Ought words (2023-02-20) etymology litclub old-shit today-i-learned
- Issachar Styrke’s Alcestis Burlesqued (2022-10-24) alcestis gilbert-and-sullivan litclub old-shit
- Blessed nuns fret not at their narrow rooms (2022-05-23) litclub music old-shit
- Cryptic poems, Mahabharata, means of production (2021-11-18) blog-roundup cppcon morality movies puzzles us-politics
- The Story of Mel (2020-01-05) esolang litclub war-stories
- Booth bits; modern cuisine (2019-03-28) food old-shit
- ’Ware Wire (2018-06-20) litclub
- Which in your case you have not got (2018-06-17) litclub naming today-i-learned
preprocessor (10)
-
Feature requests for the
Auto
macro (2024-02-14) exception-handling lambdas -
P1967
#embed
and D2752 “Static storage forinitializer_list
” are now on Compiler Explorer (2023-01-13) initializer-list llvm parameter-only-types proposal wg21 -
A macro for migrating to
static operator()
(2021-10-07) pearls proposal - 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 lambdas memes pearls -
The
FORCE_CONSTEXPR
macro (2018-08-07) constexpr pearls sufficiently-smart-compiler - Embedding quotes in strings (2018-04-27) c++-style pearls war-stories
pretty-pictures (15)
- Counting distinct n-state DFAs (2024-07-27) math
- Tangent circles of integer radius (2024-06-10) help-wanted math puzzles
- Topsys & Turvys (1893) (2024-05-23) old-shit transcription web
- Pentoprimality (2024-01-15) math puzzles
- Escheresque parquet deformations of an aperiodic monotile (2023-03-30) celebration-of-mind math web
- Lego polycube snakes (2022-12-11) lego math puzzles
- Polyomino strips, snakes, and ouroboroi (2022-12-08) math puzzles
- Image rotation by three affine transformations (2021-11-26) image-processing math web
- Image rotation by shifting pixels (2021-11-13) image-processing web
-
Bit patterns of
float
(2021-09-05) how-to math operator-spaceship - Buddhabrot (2021-07-27) math
- Scott Kim’s rotational ambigrams for the Celebration of Mind (2020-10-18) celebration-of-mind math typography web
- The Star Wars cellular automaton (2020-06-29) cellular-automata esolang web
- A cellular automaton that makes beautiful little patterns (2019-07-27) cellular-automata digital-antiquaria esolang math web
- Prince Rupert’s Lego Cube (2019-07-23) lego math science
proposal (41)
- Labeled loop syntax in many languages (2024-12-20) esolang language-design wg21
-
Field-testing
-Wassign-to-class-rvalue
(2024-12-13) compiler-diagnostics llvm nodiscard -
Should
std::expected
be[[nodiscard]]
? (2024-12-08) attributes exception-handling nodiscard -
Boost.Interprocess, and
sg14::inplace_vector
(2024-08-23) allocators data-structures relocatability sg14 stl-classic -
Why can’t I specialize
std::hash
inside my own namespace? (2024-07-15) cpplang-slack name-lookup templates - How my papers did at St Louis (2024-06-30) language-design relocatability st-louis-2024 stl-classic triviality wg21
- Who uses P2786 and P1144 for trivial relocation? (2024-06-15) relocatability st-louis-2024 triviality
- Types that falsely advertise P2786 trivial relocatability (2024-05-18) relocatability st-louis-2024 triviality
- Types that falsely advertise trivial copyability (2024-05-15) implementation-divergence metaprogramming pitfalls triviality type-traits
- Help wanted: Compile your codebase with P1144 and P2786 relocatability! (2024-04-10) help-wanted llvm relocatability wg21
-
Should assignment affect
is_trivially_relocatable
? (2024-01-02) relocatability - How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list kona-2023 lambdas library-design relocatability stl-classic value-semantics wg21
- Guard nouns or guard verbs? (2023-11-11) attributes concurrency exception-handling kona-2023 library-design mailing-list-quotes
-
Quuxplusone/SG14
now hasinplace_vector
(2023-10-20) allocators library-design relocatability sg14 standard-library-trivia - Polymorphic types aren’t trivially relocatable (2023-06-24) classical-polymorphism relocatability varna-2023
- PSA: Value-initialization is not merely default-construction (2023-06-22) initialization language-design metaprogramming varna-2023
-
P1967
#embed
and D2752 “Static storage forinitializer_list
” are now on Compiler Explorer (2023-01-13) initializer-list llvm parameter-only-types preprocessor wg21 -
Thoughts on
-Wctad-maybe-unsupported
(2022-10-07) class-template-argument-deduction compiler-diagnostics llvm rant -
A macro for migrating to
static operator()
(2021-10-07) pearls preprocessor -
std::span
should have a converting constructor frominitializer_list
(2021-10-03) initializer-list llvm parameter-only-types wg21 - Field-testing P2266 “Simpler Implicit Move” (2021-08-07) implicit-move llvm
-
P2266’s interaction with
decltype(auto)
(2021-05-04) cppnow implicit-move - Escape analysis hates copy elision (2021-03-07) copy-elision cpplang-slack implicit-move pitfalls
- 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 triviality wg21
-
operator auto
(2018-07-12) implementation-divergence metaprogramming rant today-i-learned - Trivially swappable (2018-06-29) move-semantics relocatability triviality value-semantics
-
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) benchmarks data-structures library-design -
Use-cases for
false_v
(2018-04-02) templates type-traits 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 (43)
- Nash equilibria in Ballmer’s binary-search interview game (2024-09-04) math
- Tangent circles of integer radius (2024-06-10) help-wanted math pretty-pictures
- Reverse the List of Integers (2024-04-22) math
- Pentoprimality (2024-01-15) math pretty-pictures
- Holiday puzzle: Anagrams modulo two (2023-12-24) celebration-of-mind
- Happy 109th birthday, Martin Gardner! (2023-10-21) celebration-of-mind math
- Space-filling polycube snakes (2023-06-27) celebration-of-mind math
- Mathematical golf (2023-03-23) board-games clement-wood math old-shit
- Pangrams and Scrabblegrams (2023-01-02) celebration-of-mind clement-wood help-wanted old-shit typography
- Milner’s lamp (2023-01-01) math old-shit
- Lego polycube snakes (2022-12-11) lego math pretty-pictures
- Polyomino strips, snakes, and ouroboroi (2022-12-08) math pretty-pictures
- Polycube snakes and ouroboroi (2022-11-18) celebration-of-mind coroutines math
- The game of Lielow (2022-09-02) board-games playable-games web
- Cryptic poems, Mahabharata, means of production (2021-11-18) blog-roundup cppcon morality movies poetry us-politics
- Overload arrangement puzzles (2021-10-29) cppcon overload-resolution
- Rolling 2d6 with playing cards (2021-10-21) celebration-of-mind etymology math today-i-learned
- Two old crosswords of mine (2021-08-24) knuth typography
- Two counterintuitive results (2021-08-12) math science
- Antisocial Homeworlds, and a solitaire challenge (2021-04-04) board-games homeworlds
- Homeworlds Puzzle: Mercury in Retrograde (2020-10-28) board-games homeworlds
- Homeworlds Puzzle: Burnt Umber (2020-10-25) board-games homeworlds
- 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
- Homeworlds Puzzle: War Games (2020-05-30) board-games homeworlds
- Homeworlds Puzzle: Mini Doomsday Machine (2020-05-29) board-games homeworlds 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 digital-antiquaria 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 (3)
-
Underseeding
mt19937
; introducingxoshiro256ss
(2021-11-23) antipatterns pearls - “Myths about /dev/urandom” and “What Is JavaScript Made Of?” (2020-02-09) blog-roundup
-
PSA:
<random>
’s distributions are stateful (2019-10-22) pitfalls rant standard-library-trivia
ranges (15)
-
When
ranges::for_each
behaves differently fromfor
(2024-12-09) implementation-divergence library-design standard-library-trivia - Sorting at compile time, part 2 (2024-02-20) benchmarks compile-time-performance constexpr metaprogramming
-
Sorting
integer_sequence
at compile time (2024-02-19) benchmarks compile-time-performance constexpr metaprogramming - Some C++20 ranges aren’t const-iterable (2023-08-13) library-design pitfalls
-
Iterating and inverting a const
views::filter
(2023-03-13) cpplang-slack pearls -
TIL:
nullopt_t
is not equality-comparable, butmonostate
is (2022-03-07) cpplang-slack standard-library-trivia today-i-learned value-semantics - Completeness preconditions considered harmful (2021-12-27) concepts cpplang-slack implementation-divergence library-design metaprogramming pitfalls
-
A note on
namespace __cpo
(2021-12-07) hidden-friend-idiom library-design llvm war-stories -
view_interface
types are boolean-testable (2021-12-06) c++-style today-i-learned -
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 (44)
- The Elements of Programming Style (1974) (2024-11-27) blog-roundup c++-style litclub slogans
- The jargon treadmill (2023-02-04) c++-style etymology linguistics
- Prefer core-language features over library facilities (2022-10-16) c++-learner-track c++-style concepts coroutines
-
Thoughts on
-Wctad-maybe-unsupported
(2022-10-07) class-template-argument-deduction compiler-diagnostics llvm proposal - Google Timer is dead; long live BigTimer (2022-07-25) conferences web
- Semantically ordered arguments should be lexically ordered too (2021-05-05) cppnow library-design standard-library-trivia
-
Optimizing
string::append
is harder than it looks (2021-04-17) exception-handling llvm standard-library-trivia war-stories -
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) mailing-list-quotes 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 cpplang-slack
- Slack’s new WYSIWYG input box is really terrible (2019-11-20) cpplang-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 initialization 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) flat-containers 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 -
Remember the
ifstream
(2018-11-26) classical-polymorphism concepts library-design pitfalls - 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 triviality
- Is your constructor an object-factory or a type-conversion? (2018-06-21) constructors initialization 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 value-semantics 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 (45)
-
Shifting objects by less than
sizeof(T)
(2024-11-08) cppnow data-structures sg14 -
Boost.Interprocess, and
sg14::inplace_vector
(2024-08-23) allocators data-structures proposal sg14 stl-classic - How my papers did at St Louis (2024-06-30) language-design proposal st-louis-2024 stl-classic triviality wg21
- Who uses P2786 and P1144 for trivial relocation? (2024-06-15) proposal st-louis-2024 triviality
- Types that falsely advertise P2786 trivial relocatability (2024-05-18) proposal st-louis-2024 triviality
- Help wanted: Compile your codebase with P1144 and P2786 relocatability! (2024-04-10) help-wanted llvm proposal wg21
- The 2024 Google Summer of Code idea lists are out (2024-03-05) conferences
-
Should assignment affect
is_trivially_relocatable
? (2024-01-02) proposal - Moving via relocate-and-construct (2023-12-06) sufficiently-smart-compiler
- How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list kona-2023 lambdas library-design proposal stl-classic value-semantics wg21
-
Quuxplusone/SG14
now hasinplace_vector
(2023-10-20) allocators library-design proposal sg14 standard-library-trivia - Polymorphic types aren’t trivially relocatable (2023-06-24) classical-polymorphism proposal varna-2023
- A small C++ meme dump (2023-06-17) c++-style concepts cpplang-slack memes move-semantics stl-classic varna-2023
- P1144 PMR koans (2023-06-03) allocators implementation-divergence value-semantics varna-2023 wg21
- A not-so-quick introduction to the C++ allocator model (2023-06-02) allocators value-semantics
-
Should the compiler sometimes reject a
[[trivially_relocatable]]
warrant? (2023-03-10) language-design library-design wg21 -
Update on my trivial
swap
prize offer (2023-03-04) llvm - STL algorithms for trivial relocation (2023-03-03) library-design stl-classic wg21
-
Making
priority_queue
andflat_set
work with move-only types (2023-03-01) flat-containers library-design llvm move-semantics stl-classic -
Trivial relocation,
std::swap
, and a $2000 prize (2023-02-24) help-wanted value-semantics wg21 - How my papers did at Issaquah (2023-02-17) implementation-divergence initializer-list llvm sg14 wg21
-
Type-erased
InplaceUniquePrintable
benefits fromnoexcept
(2022-07-30) exception-handling llvm pearls type-erasure -
std::relocate
’s implementation is cute (2022-05-18) pearls -
A trivially copyable ticket for a
unique_ptr
(2019-09-21) cppcon parameter-only-types smart-pointers - 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 move-semantics msvc 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) benchmarks flat-containers 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) triviality 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 triviality 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 triviality
- Trivially swappable (2018-06-29) move-semantics proposal triviality value-semantics
- 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 (3)
-
[[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 (17)
- The Mummy! (1827) (2024-04-08) litclub old-shit
- What I’m reading lately: Africa, liberty, economics (2024-01-12) blog-roundup litclub morality
- Blog roundup: U+, Bloomfield, Stuka, Gino (2023-09-16) blog-roundup today-i-learned typography
- What I’m reading lately: Scholar’s Stage, Popper, Grug (2022-07-26) blog-roundup litclub us-politics
- Three Men Discuss Relativity (1926) (2022-06-17) litclub old-shit paradigm-shift
- Two counterintuitive results (2021-08-12) math puzzles
- A Night of Serious Drinking and operationalism (2021-06-04) concepts litclub
- Thoughts on “Does GPT-2 Know Your Phone Number?” (2020-12-27) blog-roundup morality
- Prince Rupert’s Lego Cube (2019-07-23) lego math pretty-pictures
- 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
sd-8-adjacent (4)
- Two kinds of function template parameters (2023-12-17) c++-learner-track c++-style templates
-
Don’t reopen
namespace std
(2021-10-27) antipatterns c++-style cppcon slogans templates -
Don’t explicitly instantiate
std
templates (2021-08-06) library-design pitfalls - Don’t inherit from standard types (2018-12-11) c++-style class-template-argument-deduction library-design pitfalls slogans
sg14 (10)
-
Shifting objects by less than
sizeof(T)
(2024-11-08) cppnow data-structures relocatability -
Boost.Interprocess, and
sg14::inplace_vector
(2024-08-23) allocators data-structures proposal relocatability stl-classic -
Quuxplusone/SG14
now hasinplace_vector
(2023-10-20) allocators library-design proposal relocatability standard-library-trivia - How my papers did at Issaquah (2023-02-17) implementation-divergence initializer-list llvm relocatability wg21
-
P1144 case study: Moving a
fixed_capacity_vector
(2019-02-22) kona-2019 relocatability -
Contra P0429R6
flat_map
(2019-01-29) flat-containers 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 - View 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
slogans (12)
- The Elements of Programming Style (1974) (2024-11-27) blog-roundup c++-style litclub rant
-
volatile
means it really happens (2022-01-28) antipatterns c++-learner-track concurrency - The economist’s $100 bill, and the virtue of consistency (2022-01-20) jokes sre
-
Don’t reopen
namespace std
(2021-10-27) antipatterns c++-style cppcon sd-8-adjacent templates - 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 lambdas - 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 sd-8-adjacent
smart-pointers (6)
-
std::try_cast
and(const&&)=delete
(2024-07-03) exception-handling library-design st-louis-2024 -
A trivially copyable ticket for a
unique_ptr
(2019-09-21) cppcon parameter-only-types relocatability - Self-assignment and the Rule of Zero (2019-08-20) move-semantics pitfalls
-
PSA:
shared_ptr<T>()
is notmake_shared<T>()
(2019-03-06) pitfalls war-stories -
shared_ptr(&w, _1)
(2019-02-06) war-stories -
In praise of
make_unique
(2018-05-26) c++-style standard-library-trivia
sre (18)
- What I’m reading lately: Greppability, Hebb’s dictum (2024-10-15) blog-roundup jokes
- Andries Brouwer on the OOM killer (2024-08-22) blog-roundup mailing-list-quotes
- Using Wikipedia’s API to find inconsistently hyphenated French names (2024-05-04) web
- The economist’s $100 bill, and the virtue of consistency (2022-01-20) jokes slogans
- The best engineering interview question I’ve ever gotten, Part 2 (2022-01-07) war-stories
- The best engineering interview question I’ve ever gotten, Part 1 (2022-01-06) war-stories
- I sweded the LLVM Bugzilla migration (2021-12-11) llvm web
- 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) digital-antiquaria 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
st-louis-2024 (5)
-
std::try_cast
and(const&&)=delete
(2024-07-03) exception-handling library-design smart-pointers - How my papers did at St Louis (2024-06-30) language-design proposal relocatability stl-classic triviality wg21
-
How the STL uses
explicit
(2024-06-25) constructors initialization library-design standard-library-trivia - Who uses P2786 and P1144 for trivial relocation? (2024-06-15) proposal relocatability triviality
- Types that falsely advertise P2786 trivial relocatability (2024-05-18) proposal relocatability triviality
standard-library-trivia (30)
-
When
ranges::for_each
behaves differently fromfor
(2024-12-09) implementation-divergence library-design ranges -
noexcept
affects libstdc++’sunordered_set
(2024-08-16) benchmarks data-structures exception-handling stl-classic triviality -
How the STL uses
explicit
(2024-06-25) constructors initialization library-design st-louis-2024 -
Quuxplusone/SG14
now hasinplace_vector
(2023-10-20) allocators library-design proposal relocatability sg14 -
Implementation divergence with a moved-from
set
comparator (2023-05-10) flat-containers implementation-divergence stl-classic wg21 -
Fun with
flat_map
’s non-explicit constructors (2023-04-28) constructors cpplang-slack flat-containers initialization library-design - Bit-vector manipulations in standard C++ (2022-11-05) benchmarks implementation-divergence llvm stl-classic
-
An example where
inline constexpr
makes a difference (2022-07-08) constexpr cpplang-slack implementation-divergence llvm -
unordered_multiset
’s API affects its big-O (2022-06-23) benchmarks data-structures library-design stl-classic - PSA: ADL requires that unqualified lookup has found a function (2022-04-14) argument-dependent-lookup cpplang-slack customization-points library-design name-lookup pitfalls
-
TIL:
nullopt_t
is not equality-comparable, butmonostate
is (2022-03-07) cpplang-slack ranges today-i-learned value-semantics - Removing an empty base class can break ABI (2021-05-07) cppnow llvm
- Semantically ordered arguments should be lexically ordered too (2021-05-05) cppnow library-design rant
-
Optimizing
string::append
is harder than it looks (2021-04-17) exception-handling llvm rant war-stories -
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) flat-containers 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 triviality
-
Pointer to raw memory?
T*
. (2018-06-08) allocators c++-style library-design rant -
In praise of
make_unique
(2018-05-26) c++-style smart-pointers - Downsides of omitting trivial destructor calls (2018-04-17) pitfalls sufficiently-smart-compiler today-i-learned
std-format (3)
-
std::format
from scratch, part 3 (2023-04-23) how-to library-design -
std::format
from scratch, part 2 (2023-04-22) how-to library-design -
std::format
from scratch, part 1 (2023-04-21) how-to library-design
stl-classic (26)
-
Boost.Interprocess, and
sg14::inplace_vector
(2024-08-23) allocators data-structures proposal relocatability sg14 -
noexcept
affects libstdc++’sunordered_set
(2024-08-16) benchmarks data-structures exception-handling standard-library-trivia triviality - How my papers did at St Louis (2024-06-30) language-design proposal relocatability st-louis-2024 triviality wg21
- How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list kona-2023 lambdas library-design proposal relocatability value-semantics wg21
- A neat technique for custom output iterators (2023-10-01) pearls today-i-learned
- A small C++ meme dump (2023-06-17) c++-style concepts cpplang-slack memes move-semantics relocatability varna-2023
-
Implementation divergence with a moved-from
set
comparator (2023-05-10) flat-containers implementation-divergence standard-library-trivia wg21 - STL algorithms for trivial relocation (2023-03-03) library-design relocatability wg21
-
Making
priority_queue
andflat_set
work with move-only types (2023-03-01) flat-containers library-design llvm move-semantics relocatability - Simple C++20 input and output iterators (2023-01-27) pearls type-erasure
- Bit-vector manipulations in standard C++ (2022-11-05) benchmarks implementation-divergence llvm standard-library-trivia
-
A “pick two” triangle for
std::vector
(2022-09-30) exception-handling move-semantics - What is the “vector pessimization”? (2022-08-26) c++-learner-track exception-handling move-semantics pitfalls
-
Beware CTAD on
reverse_iterator
(2022-08-02) class-template-argument-deduction pitfalls war-stories -
unordered_multiset
’s API affects its big-O (2022-06-23) benchmarks data-structures library-design standard-library-trivia -
What if
vector<T>::iterator
were justT*
? (2022-03-03) argument-dependent-lookup implementation-divergence library-design llvm -
operator<=>
doesn’t obsolete the hidden friend idiom (2021-10-22) argument-dependent-lookup c++-style hidden-friend-idiom operator-spaceship -
An
iterator
IS-NOT-Aconst_iterator
(2021-07-14) antipatterns implementation-divergence library-design - Implementation divergence on swapping bools within vectors (2021-06-27) argument-dependent-lookup hidden-friend-idiom implementation-divergence templates
- The Fishspear priority queue algorithm (2021-05-23) data-structures knuth
- “Modern STL Programming” at C++ On Sea 2021 (2021-05-17) conferences cpp-on-sea training
-
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 cpplang-slack hidden-friend-idiom 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 (9)
- Moving via relocate-and-construct (2023-12-06) relocatability
- 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) benchmarks llvm
- Four versions of Eric’s Famous Pythagorean Triples Code (2019-03-06) coroutines metaprogramming ranges
-
The
FORCE_CONSTEXPR
macro (2018-08-07) constexpr pearls 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
television (1)
templates (36)
-
Why can’t I specialize
std::hash
inside my own namespace? (2024-07-15) cpplang-slack name-lookup proposal -
A
priority_tag
-like pattern for type-based metaprogramming (2024-07-07) metaprogramming type-traits - Two kinds of function template parameters (2023-12-17) c++-learner-track c++-style sd-8-adjacent
-
Replacing
std::lock_guard
with a factory function (2022-12-14) class-template-argument-deduction concurrency exception-handling implementation-divergence library-design llvm war-stories - Techniques for post-facto multiple inheritance (2022-12-01) classical-polymorphism library-design type-erasure
- Two more musings on Clang diagnostics (2022-05-05) argument-dependent-lookup compiler-diagnostics hidden-friend-idiom llvm
-
Don’t reopen
namespace std
(2021-10-27) antipatterns c++-style cppcon sd-8-adjacent slogans -
priority_tag
for ad-hoc tag dispatch (2021-07-09) metaprogramming pearls - Implementation divergence on swapping bools within vectors (2021-06-27) argument-dependent-lookup hidden-friend-idiom implementation-divergence stl-classic
- Tag dispatch versus concept overloading (2021-06-07) concepts metaprogramming
- 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 cpplang-slack hidden-friend-idiom 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) cpplang-slack pitfalls - A quirk of qualified member lookup (2020-01-11) cpplang-slack implementation-divergence language-design name-lookup 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) compiler-diagnostics concepts metaprogramming pearls
-
Exploring C++ types with
puts(__PRETTY_FUNCTION__)
(2018-08-22) msvc 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 value-semantics wg21
- Hiding template parameters from casual users (2018-05-09) c++-style
-
Use-cases for
false_v
(2018-04-02) proposal type-traits 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 triviality value-semantics wg21
this-should-exist (4)
- Heavy Planet (2022-05-22) litclub math
- 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 (3)
-
Loop variable may not be declared
static
(2020-12-03) cpplang-slack memes - Execution-agent-local storage (2018-11-14) memes rant
-
Setting errno in
operator T
(2018-06-01)
today-i-learned (19)
- A neat technique for custom output iterators (2023-10-01) pearls stl-classic
- Blog roundup: U+, Bloomfield, Stuka, Gino (2023-09-16) blog-roundup science typography
- -Ought words (2023-02-20) etymology litclub old-shit poetry
-
TIL:
nullopt_t
is not equality-comparable, butmonostate
is (2022-03-07) cpplang-slack ranges standard-library-trivia value-semantics -
view_interface
types are boolean-testable (2021-12-06) c++-style ranges - Rolling 2d6 with playing cards (2021-10-21) celebration-of-mind etymology math puzzles
- 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) cpplang-slack implementation-divergence language-design name-lookup 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 naming poetry
- 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 (5)
- Make things simpler than possible (2024-08-04) knuth old-shit poetry
-
My muscle-memory
git
toolbox (2023-10-30) blog-roundup git - C++ On Sea 2021 schedule announced (2021-05-27) conferences cpp-on-sea
- “Modern STL Programming” at C++ On Sea 2021 (2021-05-17) conferences cpp-on-sea stl-classic
- “Classic STL” at CppCon 2020 (2020-09-12) conferences cppcon stl-classic
transcription (6)
- Wolf (1906) on the false Quijotes of Avellaneda and Lesage (2024-11-02) help-wanted litclub old-shit
- Topsys & Turvys (1893) (2024-05-23) old-shit pretty-pictures web
- Succession joke chyrons (2023-09-26) jokes television us-politics
- Sonia Greene’s Alcestis (2022-10-22) alcestis litclub old-shit weird-fiction
- Transcription of All Of Them Witches (2019-08-26) litclub movies old-shit
- The Demagogue in Politics (2018-04-03) movies old-shit us-politics
triviality (10)
-
noexcept
affects libstdc++’sunordered_set
(2024-08-16) benchmarks data-structures exception-handling standard-library-trivia stl-classic - How my papers did at St Louis (2024-06-30) language-design proposal relocatability st-louis-2024 stl-classic wg21
- Who uses P2786 and P1144 for trivial relocation? (2024-06-15) proposal relocatability st-louis-2024
- Types that falsely advertise P2786 trivial relocatability (2024-05-18) proposal relocatability st-louis-2024
- Types that falsely advertise trivial copyability (2024-05-15) implementation-divergence metaprogramming pitfalls proposal type-traits
-
mutable
and “trivially fooable” (2018-08-19) relocatability wg21 - When is a trivially copyable object not trivially copyable? (2018-07-13) pitfalls proposal relocatability wg21
- Trivially-constructible-from (2018-07-03) rant relocatability standard-library-trivia
- Trivially swappable (2018-06-29) move-semantics proposal relocatability value-semantics
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 language-design naming operator-spaceship templates value-semantics wg21
type-erasure (9)
- Simple C++20 input and output iterators (2023-01-27) pearls stl-classic
- Techniques for post-facto multiple inheritance (2022-12-01) classical-polymorphism library-design templates
-
Type-erased
InplaceUniquePrintable
benefits fromnoexcept
(2022-07-30) exception-handling llvm pearls relocatability -
Type-erased
UniquePrintable
andPrintableRef
(2020-11-24) cpplang-slack pearls -
On
function_ref
andstring_view
(2019-05-10) cppnow library-design parameter-only-types pitfalls value-semantics -
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
type-traits (3)
-
A
priority_tag
-like pattern for type-based metaprogramming (2024-07-07) metaprogramming templates - Types that falsely advertise trivial copyability (2024-05-15) implementation-divergence metaprogramming pitfalls proposal triviality
-
Use-cases for
false_v
(2018-04-02) proposal templates undefined-behavior
typography (10)
- Because Internet (2019) (2024-06-19) jokes linguistics litclub memes
- Ed Catmur’s Triliteral esolang (2024-03-31) esolang
- Blog roundup: U+, Bloomfield, Stuka, Gino (2023-09-16) blog-roundup science today-i-learned
- Pangrams and Scrabblegrams (2023-01-02) celebration-of-mind clement-wood help-wanted old-shit puzzles
- Two old crosswords of mine (2021-08-24) knuth puzzles
- 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 pretty-pictures web
- On teaching Unicode in C++ (2019-02-03) rant
- If English was written like Chinese (2018-07-13) blog-roundup linguistics
- Chinese fonts, and METAFONT (2018-04-15) blog-roundup esolang knuth
undefined-behavior (6)
-
Pointer comparisons with
std::less<void>
: a horror story (2019-01-20) metaprogramming operator-spaceship rant standard-library-trivia - Comparison categories for narrow-contract comparators (2018-08-07) concepts contracts operator-spaceship
- The Lakos Rule (2018-04-25) c++-style contracts wg21-folkloristics
-
Use-cases for
false_v
(2018-04-02) proposal templates type-traits - Providentissimus Deus (2018-03-13) morality
-
The “
unsigned
for value range” antipattern (2018-03-13) antipatterns c++-style rant
us-politics (16)
- Succession joke chyrons (2023-09-26) jokes television transcription
- What I’m reading lately: tunnel edition (2022-11-12) blog-roundup jokes linguistics litclub math old-shit
- What I’m reading lately: Scholar’s Stage, Popper, Grug (2022-07-26) blog-roundup litclub science
- Cryptic poems, Mahabharata, means of production (2021-11-18) blog-roundup cppcon morality movies poetry puzzles
- Some thoughts on U.S. politics (2020-11-05)
- Grab bag (2020-10-12) blog-roundup cpplang-slack
- What I’m reading lately: New York, The Atlantic, The Three-Body Problem (2020-08-15) litclub morality
- What I’m reading lately: ACOUP, Kitbashed, the Atlantic (2020-07-06) blog-roundup litclub morality movies
- Lovecraft on Hitler (2020-06-09) litclub weird-fiction
- Discrete Peaceful Encampments, Bernie Sanders version (2020-03-21) litclub math morality puzzles
- “Counterfactual mugging” a.k.a. “charity” (2018-11-19) blog-roundup litclub morality
- The “Red Clause” (2018-10-05) old-shit
- The Mysteries of London (2018-09-05) litclub old-shit
- Assume a spherical politician (2018-07-04) morality science
- WG21 and the National Popular Vote Compact (2018-04-26) wg21
- The Demagogue in Politics (2018-04-03) movies old-shit transcription
value-semantics (11)
- Trivial, but not trivially default constructible (2024-04-02) cppcon language-design
- How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list kona-2023 lambdas library-design proposal relocatability stl-classic wg21
- P1144 PMR koans (2023-06-03) allocators implementation-divergence relocatability varna-2023 wg21
- A not-so-quick introduction to the C++ allocator model (2023-06-02) allocators relocatability
-
Trivial relocation,
std::swap
, and a $2000 prize (2023-02-24) help-wanted relocatability wg21 - Copy semantics, per Plato’s Sophist (2022-12-15) c++-learner-track old-shit
-
TIL:
nullopt_t
is not equality-comparable, butmonostate
is (2022-03-07) cpplang-slack ranges standard-library-trivia today-i-learned -
On
function_ref
andstring_view
(2019-05-10) cppnow library-design parameter-only-types pitfalls type-erasure - Trivially swappable (2018-06-29) move-semantics proposal relocatability triviality
- Default-constructibility is overrated (2018-05-10) concepts constructors naming rant templates wg21
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 language-design naming operator-spaceship templates triviality wg21
variadic-templates (10)
- Fun with quadratic pack-expansions (2023-08-05) compile-time-performance constexpr cpplang-slack lambdas metaprogramming
-
A deduction guide for
Foo(Ts..., Ts...)
(2023-05-26) class-template-argument-deduction cpplang-slack implementation-divergence metaprogramming - Left-folding and right-folding an arbitrary callable (2020-10-12) cpplang-slack metaprogramming
-
Classically polymorphic
visit
replaces some uses ofdynamic_cast
(2020-09-29) classical-polymorphism metaprogramming templates war-stories -
Folding over
operator=
(2020-05-07) blog-roundup order-of-evaluation - Thoughts on P1306 “Expansion Statements” (2019-02-28) kona-2019 language-design metaprogramming
- Not variadic expression templates (2019-02-23) kona-2019 metaprogramming pitfalls
- Packs of packs (2019-02-11) kona-2019 language-design metaprogramming
- Covariance and contravariance in C++ (2019-01-20) concepts implementation-divergence metaprogramming templates
- Template metaprogramming: Iteration is better than recursion (2018-07-23) compile-time-performance metaprogramming templates
varna-2023 (5)
- How “static storage for initializers” did at Varna (2023-07-05) implementation-divergence initializer-list llvm
- Polymorphic types aren’t trivially relocatable (2023-06-24) classical-polymorphism proposal relocatability
- PSA: Value-initialization is not merely default-construction (2023-06-22) initialization language-design metaprogramming proposal
- A small C++ meme dump (2023-06-17) c++-style concepts cpplang-slack memes move-semantics relocatability stl-classic
- P1144 PMR koans (2023-06-03) allocators implementation-divergence relocatability value-semantics wg21
war-stories (23)
-
Replacing
std::lock_guard
with a factory function (2022-12-14) class-template-argument-deduction concurrency exception-handling implementation-divergence library-design llvm templates -
Refactoring with
=delete
(2022-11-11) c++-learner-track overload-resolution -
Beware CTAD on
reverse_iterator
(2022-08-02) class-template-argument-deduction pitfalls stl-classic - The best engineering interview question I’ve ever gotten, Part 2 (2022-01-07) sre
- The best engineering interview question I’ve ever gotten, Part 1 (2022-01-06) sre
-
A note on
namespace __cpo
(2021-12-07) hidden-friend-idiom library-design llvm ranges -
Is
path
convertible tostring_view
?: a war story (2021-11-21) concepts llvm metaprogramming overload-resolution pitfalls -
Optimizing
string::append
is harder than it looks (2021-04-17) exception-handling llvm rant standard-library-trivia -
C’s removal of
gets
could have been done better (2021-03-12) compiler-diagnostics - “Flash of unstyled base class” (2020-12-09) classical-polymorphism concurrency pitfalls
- A case study in implementation inheritance (2020-10-15) classical-polymorphism
- A very short war story on too much overloading (2020-10-11) c++-style
-
Classically polymorphic
visit
replaces some uses ofdynamic_cast
(2020-09-29) classical-polymorphism metaprogramming templates variadic-templates -
Why do I get a linker error with
static const
andvalue_or
? (2020-09-19) c++-learner-track cppcon pitfalls - The “OO” Antipattern (2020-05-28) antipatterns blog-roundup c++-learner-track c++-style slogans
- A bug in Adventure’s endgame (2020-02-06) adventure digital-antiquaria knuth
- The Story of Mel (2020-01-05) esolang litclub poetry
-
PSA:
shared_ptr<T>()
is notmake_shared<T>()
(2019-03-06) pitfalls smart-pointers -
shared_ptr(&w, _1)
(2019-02-06) smart-pointers -
37 percent of HyperRogue’s compilation time is due to
std::function
(2019-01-06) compile-time-performance hyperrogue sg14 type-erasure - The surprisingly high cost of static-lifetime constructors (2018-06-26) benchmarks compile-time-performance hyperrogue initializer-list pitfalls
- Avoid ADL calls to functions with common names (2018-06-17) argument-dependent-lookup customization-points hyperrogue pitfalls
- Embedding quotes in strings (2018-04-27) c++-style pearls preprocessor
web (41)
- Topsys & Turvys (1893) (2024-05-23) old-shit pretty-pictures transcription
- Using Wikipedia’s API to find inconsistently hyphenated French names (2024-05-04) sre
- The algebraic structure of Infinite Craft (2024-03-03) knuth math
- Infinite Craft (2024-02-08) hyperrogue playable-games
- Map of NYC Michelin stars, 2023 (2023-11-08) food
- Triangular Tetris (2023-05-19) celebration-of-mind playable-games
- Escheresque parquet deformations of an aperiodic monotile (2023-03-30) celebration-of-mind math pretty-pictures
- Map of NYC Michelin stars, 2022 (2022-10-25) food
- The game of Lielow (2022-09-02) board-games playable-games puzzles
- Google Timer is dead; long live BigTimer (2022-07-25) conferences rant
- Evirdle (2022-02-27) playable-games wordle
- Birdle (2022-02-20) jokes music playable-games wordle
- I sweded the LLVM Bugzilla migration (2021-12-11) llvm sre
- Image rotation by three affine transformations (2021-11-26) image-processing math pretty-pictures
- Image rotation by shifting pixels (2021-11-13) image-processing pretty-pictures
- The Fourth Dimension and the Bible (1922) (2021-11-05) litclub math old-shit paradigm-shift
- Evasive Maneuvers (1994) (2021-10-08) digital-antiquaria playable-games
- Play The Search for Almazar online (2021-05-16) adventure digital-antiquaria playable-games
- Flavors of Base64 encoding (2020-11-17) how-to kotlin
- Thoughts on OEIS A125508 (2020-10-18) board-games celebration-of-mind math puzzles
- Scott Kim’s rotational ambigrams for the Celebration of Mind (2020-10-18) celebration-of-mind math pretty-pictures typography
- Phantoms vs Phantoms (Geister) (2020-08-22) board-games playable-games
- MathJax v3 in Jekyll (2020-08-19) how-to knuth
- The Star Wars cellular automaton (2020-06-29) cellular-automata esolang pretty-pictures
- Homeworlds Puzzle: Mini Doomsday Machine (2020-05-29) board-games homeworlds puzzles
- C++Now 2020: A C++ Magic Trick (2020-05-04) cppnow parameter-only-types
- OpenSSL client and server from scratch, part 5 (2020-01-28) library-design networking
- Slack’s new WYSIWYG input box is really terrible (2019-11-20) cpplang-slack rant
- Throwback Saturday: Three variants on 2048 (2019-11-16) playable-games
- Dragonflight, and running DosBox in the browser (2019-08-11) digital-antiquaria playable-games
- A cellular automaton that makes beautiful little patterns (2019-07-27) cellular-automata digital-antiquaria esolang math pretty-pictures
-
Announcing
Quuxplusone/coro
, single-header C++2a example code (2019-07-03) concepts coroutines ranges - A faster WG21 CWG issue browser (2019-05-22) wg21
- Map of NYC Michelin stars, 2019 (2019-03-26) food
- README for my Peaceful Encampments visualizer (2019-03-18) math puzzles
- Colossal Cave Adventure: open world challenge (2019-01-28) adventure digital-antiquaria puzzles
- Peaceful Encampments, round 2 (2019-01-21) math puzzles
- Happy birthday, Donald Knuth! and Peaceful Encampments (2019-01-10) adventure celebration-of-mind knuth litclub math puzzles
- MathJax in Jekyll (2018-08-05) how-to knuth
- shields.io (2018-06-26) hyperrogue sre today-i-learned
- First post — Jekyll Now (2018-03-13) cpplang-slack how-to
weird-fiction (6)
- The epitaph of Adrian’s horse (2023-03-22) blog-roundup jokes litclub old-shit poetry
- Notes on Sonia Greene’s Alcestis (2022-10-23) alcestis gilbert-and-sullivan litclub old-shit
- Sonia Greene’s Alcestis (2022-10-22) alcestis litclub old-shit transcription
- The Box of Delights (2020-12-27) blog-roundup celebration-of-mind litclub
- Lovecraft on Hitler (2020-06-09) litclub us-politics
- The Three Impostors: Four-ale and six-ale (2018-07-26) litclub old-shit today-i-learned
wg21 (38)
- Labeled loop syntax in many languages (2024-12-20) esolang language-design proposal
- How my papers did at St Louis (2024-06-30) language-design proposal relocatability st-louis-2024 stl-classic triviality
- Help wanted: Compile your codebase with P1144 and P2786 relocatability! (2024-04-10) help-wanted llvm proposal relocatability
- A note on feature-test macros (2024-02-06) feature-test-macros
- How my papers did at Kona (2023-11-12) attributes exception-handling implicit-move initializer-list kona-2023 lambdas library-design proposal relocatability stl-classic value-semantics
- P1144 PMR koans (2023-06-03) allocators implementation-divergence relocatability value-semantics varna-2023
-
Implementation divergence with a moved-from
set
comparator (2023-05-10) flat-containers implementation-divergence standard-library-trivia stl-classic -
Should the compiler sometimes reject a
[[trivially_relocatable]]
warrant? (2023-03-10) language-design library-design relocatability - STL algorithms for trivial relocation (2023-03-03) library-design relocatability stl-classic
-
Trivial relocation,
std::swap
, and a $2000 prize (2023-02-24) help-wanted relocatability value-semantics - How my papers did at Issaquah (2023-02-17) implementation-divergence initializer-list llvm relocatability sg14
-
P1967
#embed
and D2752 “Static storage forinitializer_list
” are now on Compiler Explorer (2023-01-13) initializer-list llvm parameter-only-types preprocessor proposal -
std::span
should have a converting constructor frominitializer_list
(2021-10-03) initializer-list llvm parameter-only-types proposal -
Precedence of a proposed
|>
operator (2020-04-10) coroutines language-design proposal ranges - Why doesn’t C++ have networking support? (2019-10-09) concurrency library-design
- The post-Cologne mailing is out (2019-08-18) allocators copy-elision coroutines rant
- Enums break strong structural equality (2019-07-04) operator-spaceship templates
- P1616R0 and health insurance (2019-07-03) concepts implementation-divergence metaprogramming templates
-
Contra P0339 “
polymorphic_allocator<>
as a vocabulary type” (2019-07-02) allocators class-template-argument-deduction library-design proposal rant - In support of P1485 “Better keywords for coroutines” (2019-06-26) coroutines proposal
- A faster WG21 CWG issue browser (2019-05-22) web
- How my papers did at Kona (2019-03-20) kona-2019 operator-spaceship relocatability
- Hot takes on P1452, P1470, P0408, and P0843 (2019-02-03) concepts kona-2019 library-design rant
-
Contra P0429R6
flat_map
(2019-01-29) flat-containers kona-2019 library-design sg14 -
Hot takes on
flat_map
,resize_default_init
, andranges::to
(2019-01-28) flat-containers kona-2019 rant - How DNS got so complicated (2018-11-20) networking sre
- WG21: Avoid creating ADL situations on functions with semi-common names (2018-11-04) argument-dependent-lookup customization-points pitfalls proposal san-diego-2018
-
mutable
and “trivially fooable” (2018-08-19) relocatability triviality -
What does the Standard mean by “
_traits
”? (2018-07-14) allocators customization-points library-design metaprogramming templates - When is a trivially copyable object not trivially copyable? (2018-07-13) pitfalls proposal relocatability triviality
- Stone Soup (2018-06-06)
- View types with metadata cause problems (2018-05-30) library-design parameter-only-types pitfalls sg14
- Thoughts on Concepts, P0745, and P1079 (2018-05-28) concepts
- Default-constructibility is overrated (2018-05-10) concepts constructors naming rant templates value-semantics
- WG21 and the National Popular Vote Compact (2018-04-26) us-politics
- Namespaces for UDLs (2018-03-21) jacksonville-2018 proposal
- P0732R0 and “trivially comparable” (2018-03-19) jacksonville-2018 language-design naming operator-spaceship templates triviality value-semantics
- Hot take: P0947R0 “Another take on Modules” (2018-03-14) jacksonville-2018 language-design modules rant
wg21-folkloristics (8)
- History of non-standard-layout class layouts (2022-03-04) access-control
-
What is the
std::swap
two-step? (2020-07-11) argument-dependent-lookup c++-learner-track library-design -
Mangling dependent parameter types, or, what happened to
std::default_order
(2019-08-08) metaprogramming operator-spaceship pitfalls standard-library-trivia templates - A C++ acronym glossary (2019-08-02) c++-learner-track cpplang-slack
- “Exception Handling: A False Sense of Security” (2019-06-17) exception-handling
- What is ADL? (2019-04-26) argument-dependent-lookup c++-learner-track
- The Ignorable Attributes Rule (2018-05-15) attributes language-design
- The Lakos Rule (2018-04-25) c++-style contracts undefined-behavior