Skip to content
FreeType

C++ typing test

Pointers, templates, and dense operator-heavy lines.

0 wpm100% acc0sstart typing…
square.cpp
int square(int x) { return x * x; }

Characters that slow you down in C++

  • ::Two shifted colons in succession, same finger, no bounce.
  • ->Hyphen then shift-period. Crosses hands mid-token.
  • <<Stream insertion: shift-comma twice, cleanly.
  • &Shift-7 for references, a left-hand number-row reach.
  • *Shift-8 for pointers, adjacent to the ampersand and easily swapped.

Scope resolution doubles the hardest colon

A fully qualified iterator type contains the double colon twice, and each one is two shifted presses of the same right little finger in immediate succession. Typed too fast it produces a single colon; typed too slowly it breaks the line's rhythm entirely.

The trick is holding shift across both presses rather than releasing between them. That sounds obvious and is surprisingly hard to do consistently at speed, which is why scope resolution shows up in heatmaps far more than developers expect.

Stream operators are a doubling exercise

Output lines use the insertion operator repeatedly, and doubled shifted characters are a distinct motor skill. The failure mode is dropping one of the pair, producing a single angle bracket that changes the meaning of the line completely.

This is the same skill as scope resolution and the logical AND, so drilling C++ improves all three together. If you write C++ regularly, doubled operators are probably your highest-value target.

Pointers and references sit next to each other

The ampersand is shift-7 and the asterisk is shift-8 — adjacent keys with adjacent meanings, and confusing them turns a reference into a dereference. This is one of the few typing errors in any language that produces code which compiles and does the wrong thing.

Because the consequence is silent, accuracy on these two keys matters more than on almost anything else. Slow down deliberately when a line contains both.

Templates stack brackets on top of everything

A nested container type closes three brackets in a row after your hand has crossed the keyboard several times. Modern compilers accept the doubled closing bracket where older ones needed a space, which means that closing run is now genuinely doubled shifted characters.

Long template expressions are the hardest single thing to type in everyday C++. If you can hold accuracy through one at pace, the rest of the language feels comfortable.

Frequently asked questions

Why is C++ so much slower to type than other languages?
It has the highest density of shifted symbols, and many arrive in doubled pairs. Doubled shifted characters are slower and less reliable than any single key.
What is the most commonly mistyped C++ character?
The double colon, usually collapsing to a single colon under speed. Stream operators fail the same way, dropping one of the pair.
Does C++ practice help with other languages?
Yes, more than most. Its doubled operators and template brackets cover the hardest movements in TypeScript, Rust and Java as well.

Practise by level

Related reading

We stand with Palestine.