Challenge Library
Coding Challenges
5,893 curated questions across every arena — browse by topic, then jump into a live 2-minute battle to put them to the test.
Filter by type
Filter by difficulty
Popular topics
4,318 challenges matching your filters
- Multiple ChoiceIntermediate
Aggregate initialization rules
cppaggregate-initinitialization - Multiple ChoiceIntermediate
Narrowing conversion in braces
cppaggregate-initnarrowinginitialization - Multiple ChoiceIntermediate
inline function ODR exception
cppodrinlinelinker - Multiple ChoiceIntermediate
ODR violation no diagnostic
cppodrundefined-behaviorlinker - Multiple ChoiceIntermediate
inline variables C++17
cppinlineodrc++17 - Multiple ChoiceIntermediate
Template instantiation in TUs
cpptemplatesodrlinker - Multiple ChoiceIntermediate
extern template purpose
cpptemplatesextern-templatecompilation - Multiple ChoiceBeginner
operator<< as friend vs member
cppoperator-overloadingfriend - Multiple ChoiceIntermediate
CRTP static polymorphism
cppcrtptemplatesstatic-polymorphism - Multiple ChoiceIntermediate
Diamond inheritance ambiguity
cppdiamondvirtual-inheritance - Multiple ChoiceHard
Virtual base construction order
cppvirtual-inheritancediamondconstruction - Multiple ChoiceIntermediate
Non-member swap idiom
cppswapadloperator-overloading - Multiple ChoiceIntermediate
atomic default memory order
cppatomicsmemory-modelmemory-order - Multiple ChoiceHard
relaxed atomic does not synchronize
cppatomicsmemory-orderdata-race - Multiple ChoiceHard
acquire-release pairing
cppatomicsmemory-orderacquire-release - Multiple ChoiceBeginner
std::atomic<bool> vs volatile
cppatomicsvolatilememory-model - Multiple ChoiceHard
compare_exchange_weak vs strong
cppatomicscompare-exchangecas - Multiple ChoiceBeginner
Purpose of std::enable_if in overload resolution
templatessfinaeenable_if - Multiple ChoiceBeginner
Structured bindings and reference semantics
structured-bindingsautoc++17 - Multiple ChoiceBeginner
std::optional value semantics on engagement
optionalc++17api - Multiple ChoiceBeginner
Laziness of range views in C++20 ranges
rangesviewslazy - Multiple ChoiceBeginner
Why a base class needs a virtual destructor
virtual-destructorpolymorphismub - Multiple ChoiceBeginner
Rule of zero rationale for resource classes
rule-of-zeroraiismart-pointers - Multiple ChoiceBeginner
RAII core idea for exception safety
raiiexception-safetylifetime - Multiple ChoiceBeginner
Which smart pointer for exclusive ownership
unique-ptrownershipsmart-pointers - Multiple ChoiceBeginner
What happens on a noexcept function throwing
noexceptexceptionsterminate - Multiple ChoiceBeginner
nullptr versus NULL type safety
nullptrapitype-safety - Multiple ChoiceIntermediate
The immediate context rule in SFINAE
sfinaetemplatesoverload-resolution - Multiple ChoiceIntermediate
Requires-clause vs requires-expression with concepts
conceptsc++20requires - Multiple ChoiceIntermediate
decltype of a parenthesized id-expression
decltypelvaluetype-deduction - Multiple ChoiceIntermediate
How std::declval may be used in unevaluated context
declvalsfinaeunevaluated-context - Multiple ChoiceIntermediate
Accessing the wrong alternative in std::variant
variantexceptionsstd-get - Multiple ChoiceIntermediate
Iterator invalidation after unordered_map insert
unordered-mapiterator-invalidationrehash - Multiple ChoiceIntermediate
Why condition_variable wait needs a predicate loop
condition-variablespurious-wakeupconcurrency - Multiple ChoiceIntermediate
Why the Meyers singleton is thread-safe
singletonstatic-initthread-safety - Multiple ChoiceHard
Difference between constinit and constexpr variables
constinitconstexprc++20 - Multiple ChoiceHard
Defaulted spaceship operator semantics detail
three-way-comparisonc++20defaulted-operators - Multiple ChoiceHard
Strict aliasing and type punning legality
strict-aliasingbit_castub - Multiple ChoiceHard
Why compare_exchange_weak is preferred in loops
atomicscaslock-free - Multiple ChoiceHard
How jthread differs from std::thread
jthreadstop-tokenc++20 - Multiple ChoiceHard
Static initialization order fiasco across TUs
static-initodrglobals - Multiple ChoiceBeginner
memory_order_relaxed visibility
atomicsmemory-modelrelaxed - Multiple ChoiceBeginner
hardware_destructive_interference_size purpose
cache-lineC++17false-sharing - Multiple ChoiceBeginner
seqlock reader retry condition
seqlocksynchronizationreader-writer - Multiple ChoiceBeginner
std::format return type
std::formatC++20strings - Multiple ChoiceBeginner
flat_map underlying storage
flat_mapC++23containers - Multiple ChoiceBeginner
std::midpoint overflow safety
midpointC++20numericoverflow - Multiple ChoiceBeginner
std::assume contract semantics
assumeC++23optimization - Multiple ChoiceBeginner
span first subview
spanC++20ranges - Multiple ChoiceBeginner
initializer_list lifetime trap
initializer-listlifetimedangling - Multiple ChoiceBeginner
bitset count expression
bitsetpopcountC++20 - Multiple ChoiceIntermediate
std::atomic double operations
atomicsfloating-point - Multiple ChoiceIntermediate
latch vs barrier reusability
synchronizationbarrierlatchC++20 - Multiple ChoiceIntermediate
counting_semaphore acquire
semaphoreC++20concurrency - Multiple ChoiceIntermediate
expected has_value check
std::expectedC++23error-handling - Multiple ChoiceIntermediate
to_chars result contract
to_charsC++17numeric - Multiple ChoiceIntermediate
ranges sort projection argument
rangesprojectionalgorithms - Multiple ChoiceIntermediate
explicit(bool) conditional explicit
explicitC++20constructors - Multiple ChoiceIntermediate
template template variadic match
templatestemplate-templateC++17 - Multiple ChoiceIntermediate
snapshot ctor noexcept move vector
noexceptmove-semanticsvector
Practice now, dominate the arena
Every challenge here is drawn from the live Code Royale pool. Review a question, then head to the arena to answer under pressure against a real opponent — 2-minute matches, Elo ranking, and badge tiers on the line.