INDEX

Symbols and Numbers

::testing::, 328

=0 (pure virtual methods), 138

2001: A Space Odyssey, li, 353

The 300, 685

42six, 500

<algorithm>, 576–628

<any>, 378–379

<array>, 408

<atomic>, 653

/bin/sh (and std::system), 697

<bitset>, 432–433

<boost/algorithm/

searching/boyer_moore.hpp>, 713

string/case_conv.hpp>, 515

string/classification.hpp>, 512, 513

string/find.hpp>, 519

string/finder.hpp>, 514

string/join.hpp>, 517

string/predicate.hpp>, 511

string/replace.hpp>, 515

string/split.hpp>, 517

string/trim.hpp>, 515

<boost/any.hpp>, 378

<boost/array.hpp>, 408

<boost/asio.hpp>, 664

<boost/bimap.hpp>, 453

<boost/chrono.hpp>, 387

<boost/circular_buffer.hpp>, 434

<boost/container/

deque.hpp>, 424

flat_map.hpp>, 453

flat_set.hpp>, 453

list.hpp>, 425

set.hpp>, 435

slist.hpp>, 434

small_vector.hpp>, 434

stable_vector.hpp>, 434

static_vector.hpp>, 434

<boost/date_time/

posix_time/posix_time.hpp>, 386

time_zone_base.hpp>, 386

<boost/graph/

adjacency_list.hpp>, 455

adjacency_matrix.hpp>, 455

edge_list.hpp>, 455

<boost/heap/*.hpp>, 453

<boost/intrusive/*.hpp>

associative containers, 453

sequential containers, 434

<boost/lexical_cast.hpp>, 500

<boost/logic/tribool.hpp>, 370

<boost/math/constants/constants.hpp>, 394

<boost/multi_array.hpp>, 434

<boost/multi_index_container.hpp>, 453

<boost/numeric/conversion/converter.hpp>, 401

<boost/optional.hpp>, 372

<boost/pair.hpp>, 374

<boost/program_options.hpp>, 700

<boost/property_tree/

json_parser.hpp>, 456

ptree.hpp>, 456

<boost/ptr_container/*.hpp>

associative containers, 453

sequential containers, 434

<boost/smart_ptr/

intrusive_ptr.hpp>, 363

shared_array.hpp>, 356

shared_ptr.hpp>, 356

<boost/test/included/unit_test.hpp>, 318

<boost/timer/timer.hpp>, 390

<boost/tuple/tuple.hpp>, 376

<boost/unordered_map.hpp>, 453

<boost/unordered_set.hpp>

multiset, 446

set, 442

<boost/variant.hpp>, 379

[[carries_dependency]], 224

<chrono>,

Chrono library, 387

literals, 197

<cmath>, 393

<complex>, 393

<condition_variable>, 656

__cplusplus, xlv

<csignal>, 699

<cstdarg>, 250

<cstddef>

size_t, 41

std::byte, 40

<cstdint>, 32

<cstdio>

Hello, world!, 4

printf pedagogy, 19

<cstdlib>

environment variables, 698

program termination, 693

<cstring>, 109

<cwchar>, 46

[[deprecated]], 224

<deque>, 424

#else, 709

<errno.h>, 353

<execution>, 575

[[fallthrough]], 224

<filesystem>, 552

<fstream>, 542

<functional>, 269

<future>, 640

#ifndef, 709

#include

double inclusion, 710

explanation of, 5

<initializer_list>, 457

<iomanip>, 554

<iostream>, 524

<istream>, 524

<iterator>

auxiliary functions, 472

insert iterators, 464

iterator adapters, 476

reverse iterator adapters, 477

std::size, 45

<limits>, 188

<list>, 425

<locale>, 521

<map>

maps, 446

multimaps, 452

[[maybe_unused]], 224

<memory>

memory operations, 636

shared pointer, 356

unique pointer, 349

<mutex>, 649

<new>

allocators, 365

overloading new, 189

[[nodiscard]], 224

[[noreturn]], 224, 244

<numeric>, 629, 636

<optional>, 372

<ostream>, 524

#pragma once, 710

<queue>, 429–430

<random>, 396–398

<ratio>, 403

<regex>, 503

<set>

multiset, 441

set, 435

<shared_mutex>, 649

<stack>, 427

<stdexcept>

runtime error, 98

standard exception classes, 101

<system_error>, 102

<thread>

low-level concurrency, 658

waiting, 389

<tuple>, 376

<type_traits>

example using, 227

explanation of, 164

<unordered_set>

unordered multiset, 446

unordered set, 442

<utility>, 374

<variant>, 379

<vector>, 415

A

A, 328

abs, 392, 394

absolute path, 552

absolute value, 28

acceptance test, 282

access controls, 56

access violation, 76

acos, 392, 394

acosh, 393

action, 324

addition +, 183

addition assignment, 184

address-of & operator, 185

address space layout randomization (ASLR), 69

adjacent difference (operation), 633

Advanced Package Tool (APT), 10

After (HippoMocks), 333

Alexandrescu, Andrei, 178

algorithm, xlviii, 407, 573

complexity, 574

allocation

object lifecycle, 90

dynamic storage, 95

smart pointers, 341

AlphaHistogram, 275

ALT-J, 526

American Standard Code for Information Interchange. See ASCII

An, 328

Anathem (Stephenson), 84

AND operator

Boolean &, 182

logical &&, 182

The Answer to the Ultimate Question of Life, the Universe, and Everything, 251

AnyNumber, 328

Apple, 8, 32. See macOS

Approx, 307

APT (Advanced Package Tool), 10

Aqua Teen Hunger Force, 514

arg (std::complex), 394

argc and argv

Boost ProgramOptions, 704

main, 272

arguments (to a function), 16

arithmetic operators, 182

array

decay to a pointer, 72–74

description, 42–43

dynamic, 96

initialization of, 61

new/delete expressions, 96

reference, 175

size of, 45

std::array, 408

The Art of Assembly Language, 2nd Edition (Hyde), xxxix

ASCII (American Standard Code for Information Interchange)

table, 47

example histogram, 274

string comparisons, 488

asin, 392, 394

asinh, 393

Asimov, Isaac, 273–274

ASLR (address space layout randomization), 69

ASSERT_

ANY_THROW, 312

DOUBLE_EQ, 312

EQ, 312

FALSE, 312

FLOAT_EQ, 312

GE, 312

GT, 312

HRESULT_FAILED, 312

HRESULT_SUCCEEDED, 312

LE, 312

LT, 312

NE, 312

NO_THROW, 312

STRCASEEQ, 312

STRCASENE, 312

STREQ, 312

STRNE, 312

THROW, 312

TRUE, 312

assertions

with Boost Test, 319

with Catch, 305

description of, 288

with Google Test, 312

assert_that, 288

assigned numbers (IANA), 667

assignment operator, 184

associative

arrays, 446

containers, 434

asterisk (the many uses of), 70

asynchronous

operations, 664

procedure call, 651

task, 640

atan, 392, 394

atanh, 393

atomic, 653

AtLeast, 328

AtMost, 328

attribute, 223

Aumasson, Jean-Philippe, 396

Austin Powers: International Man of Mystery, 515

auto, xlii

code refactoring, 85

initialization, 84

modifiers, 85

type deduction, 84–86

automatic object, 90

automatic storage duration, 90

autonomous vehicle, 283

auto type deduction, 248

auxiliary iterator function, 472

Averageable (concept), 168

Avogadro’s number, 36

B

Bachmann-Landau notation, 574

Back to the Future, 641

badbit, 530

bad_file_descriptor (std:errc), 102

Bank, 134

Batman: The Dark Knight, 534

Battlestar Galactica, 110

begin (iterators), 467

benzodiazepine receptor agonist, 202–203

Between, 328

bgp, 667

bidirectional range, 511

The Big Lebowski, 534

Big O notation, 574

binary arithmetic operators, 183

binary integers, 33

binary mode (file), 542

binary search, 617

Bindels, Peter, xxv, 332

bitset, 432

bitwise logical operators, 182

Bladerunner, 121

blocks, 212

block scope, 212

Book of Revelation, 153

Boolean/integer conversion, 38

Boolean literal, 38

bool, 38

boost::

add_edge, 455

add_vertex, 455

adjacency_list, 455

adjacency_matrix, 455

adjacent_vertices, 455

algorithm, 510–520, 637

any, 378, 705

array, 408

asio, 663–689

bimap, 453

char_separator, 520

circular_buffer, 434

compressed_pair, 374

container, 415–453

converter, 401

edge_list, 455

get, 376

gregorian, 383, 384, 385

heap, 453

intrusive, 434, 453

intrusive_ptr, 363

lexical_cast, 500

logic, 370

math, 394

multi_array, 434

multi_index_container, 453

num_edges, 455

num_vertices, 455

numeric, 402

numeric_cast, 403

optional, 372

program_options, 701–704

property_tree, 456

ptr_list, 434

ptr_map, 453

ptr_set, 453

ptr_unordered_map, 453

ptr_unordered_set, 453

ptr_vector, 434

scoped_array, 348

scoped_ptr, 342

shared_array, 356

system, 664

timer, 390

tokenizer, 520

tuple, 376

unordered_map, 453

unordered_multimap, 453

unordered_multiset, 446

unordered_set, 442

variant, 379

weak_ptr, 361

Boost

Beast, 689

Libraries, 317

Container, 433

DateTime, 383

Graph Library, 455

IOStream, 549

Math, 392

ProgramOptions, 700

Python, 712

String Algorithms, 510

Test, 317–322

Tokenizer, 520

BOOST_

AUTO_TEST_CASE, 317–322

FIXTURE_TEST_CASE, 317–322

TEST, 317–322

TEST_MODULE, 317–322

Boston Corbett, 245

Boyer-Moore, 713

braced initialization, 59, 83, 417

braces, 15

BrakeCommand, 283

break

keyword, 50

statement, 238

Bucket (class), 190

buckets

for memory allocation, 190

for unordered sets, 442

buffer, 671

buffering, 532

buffer overflow, 74–75

BugblatterBeast, 379

built-in types, 31

byte pointer, 76

bytes, 40

C

C, xxv, xxxvii, 34

C++ 20, 163

The C++ Programming Language, 4th Edition (Stroustrup), xxxii, 137, 159, 198, 415

The C++ Standard Library, 2nd Edition (Josuttis), 164, 415, 444, 535

C++ Templates: The Complete Guide (Vandevoorde et al.), 178

CADRe, liii, 108

Caesar cipher, 418

calculator program, 528

callable type, 255

callback, 664

call stack, 105

exception unwinding, 111

canonical path, 552

capture list (lambda), 262

carbon_thaw, 152

CarDetected, 283

case, 50, 229

casting, 201

Catch, 304, 344

CATCH_CONFIG_MAIN, 304, 344

cbegin (iterators), 467

cbrt, 392

ceil, 393

cend (iterators), 467

char, 36

character literals, 37

CharCategory, 613

Charles VII, 598

CHECK, 304, 344

CHECK_NOTHROW, 304, 344

CHECK_THROWS_AS, 304, 344

CheckedInteger, 187

Clang, 9

class

constructor, 58

fully featured, 54

hierarchy, 138

initialization, 59

initializing PODs, 60

invariant, li, 58

as keyword, 56

methods, 55

plain-old-data, 52

as template parameter, 150

vs. struct, 57

client, 666

Clock of the Long Now, 55

closed range, 413

cmd.exe, 697

C++Now, 29

code instrumentation, 282

code reuse, 149

Color, 205

command line parameters, 272

comments, 21

comparator object, 430, 435

comparison operators, 15, 185, 611

compiler, 4

definition of, 5

tool chain, 5

Compiler Explorer, 6

compiler-generated methods, 129

compiler optimization, 710

compile-time

control structures, 178

recursion, 252

complement ~, 182

completion condition (Boost Asio), 675

complexity, 574

complex number, 393

compound statements, 15, 212

concepts, 163

concrete class/type, 150

concurrency, 640

hint, 664

conditional compilation, 709

conditional expression, 43, 232

condition variable, 656

conj (std::complex), 394

console

application, 3

printing to, 4

ConsoleLogger, 134

const

argument, 81

external, 287

member variable, 83

method, 82

constant expression, 204

const_cast, 152

constexpr, xxvii, xxxviii, 204

function, 244

if statement, 227

constructor, li, 58

constructor acquires, destructor releases (CADRe), liii, 108

constructor injection, 145

const/volatile qualification, 246

consumer, 56, 137

container, xlviii, 407

adapters, 427

continue statement, 239

control block, 356

control code characters, 48

copy

assignment, 160

assignment operator, 119

command line, 272

construction, 117, 160

guidelines, 122

semantics, 115

cos, 392, 394

cosh, 393

CountIf, 257

cout vs. printf, 19

cp (command line), 272

CppCast, 29

CppCon, 29

Cryptonomicon (Stephenson), 536

C-style

APIs, 74

cast, 202

strings, 45

cumulative sum, 537

cursor (stream), 548

D

data buffer, 671

data execution prevention, 69

data structure, 370

date period, 385

daytime, 667

DeadMenOfDunharrow, 343

dead store, 208

deallocation, 90

Debian, 10

debugging, 6, 21

decimal integers, 33

declaration statements, 213

decomposition methods (path), 553

decorating, xlv

decrement operator, 185

deep copy, 117

default

case (switch), 50

capture (lambda), 264

copy, 121

keyword, 129, 160

delete

example of, 129, 160

usage, 95

dependency injection, 323

deque, 424

destructor, li, 64, 90

Diablo, 424

Dick, Philip K., 549

Dirk Gently’s Holistic Detective Agency (Adams), 140

directory, 552

div, 392

division /, 183

domain, 667

dot operator (.), 54

dot product, 632

double, 35

double free, 116, 160

double-inclusion problem, 708

double precision, 35

do-while loop, 231

DoubleEq, 328

Dr. Seuss, 577

Dragon Ball Z, 228, 328

Drozdek, Adam, 439

duck typing, 163

duration (time), 387

Dwarves of Middle Earth, 86

dynamic

allocation, 161

arrays, 96

memory, 342

object, 95

ports, 684

storage duration, 95

E

EACCES, 104, 352

EBCDIC encoding, 488

echo, 667

echo server, 683

ECMAScript, 504

Edges (graph), 454

Effective Modern C++ (Meyer), xxxii, 50, 105, 159, 177, 416, 420

Electronic Freedom Foundation, 582

Elvis operator (:?), 186

The Empire Strikes Back, 152, 240

encapsulation, 54, 93

end (iterator), 467

ENOENT, 352

entry point, 4, 272

EndWith, 328

enum class, 49

enumeration type, 49

environment variables, 698

EOF, 531

eofbit, 530

epoch, 387

erf, 392

errno, 352

error

codes, 102

handling, 113

EscapeCapsule, 378

escape sequences, 37

Euler’s number, 54

evaluation order, 196

event, 283

Exactly, 328

exception, lii, 98

alternatives to, 114

and the object life cycle, 89

performance of, 113

rethrowing, 103

user-defined, 104

execution order, 211

execution policy, 575, 658

exit code, 4

exp, 392

exp2, 392

expectation, 325

EXPECT_CALL, 326

explicit, 204

explicit type conversion, 201

exploit, 69

expression statement, 43, 211

extended precision, 35

extern, xlv, 91, 92, 699, 711

external linkage, 92

extractor, 527

extreme-value algorithms, 626

F

factorization, 643

Fahller, Björn, 337

FAIL, 308

failbit, 530

FakeIt, 337

fclose, 352

FibonacciRange, 235

file, 552

FILE, 353

file stream classes, 541

filesystem library, 551

fill constructor, 416

final, 245

finder (string), 514

finfisher, 445

Firefly, 594

Flintstone, Fred, 34

float, 35

FloatEq, 328

floating-point

literals, 35

promotion rules, 183

types, 35

floor, 393

flushing, 532

fma, 392

fmod, 392

fold

expression, 253

operation, 630

fopen, 352

for loop

a nickel tour of, 43

description of, 232

range-based, xlvii, 44, 234

format specifiers, 18

Boolean, 38

character, 38

floating point, 36

integer, 32

pointer, 68

size_t, 41

format strings, 18

formatted stream operations, 525

forward-linked list, 78

forward range, 511

Foundation (Asimov), liv

fprintf, 352

free functions, 214

free store, 189, 365

ftp (file transfer protocol), 667

function

absolute value, 28

anonymous, xlix

call operator, 255

declaration, 213, 244

declaration vs. definition, 63

definition, 214

free, 214

inlining, 245

invocation, 18

main, 4

modifier, 244

namespace scope, 214

non-member, 214

object, 255

overloading, xxxix, 249

parameter pack, 252

pointer declaration, 254

prefix modifier, 244

specifier, 244

step, 17

suffix modifier, 244

sum, 29

templates, 248

functional programming, 254

fundamental types, 31

G

Galaxy Quest, 539

garbage collector, 90

GCC, 9–13

gcd, 392

gdb, 25

Ge, 328

generator (string), 512

generic lambda, 261

generic programming, l, 156, 248

get, 175

get_copy, 172

getter, 56, 82, 287

Gettysburg Address, 69

global

namespace, 217

scope, 91

stream objects, 525

glvalue, 124

Gt, 328

gmock_gen.py, 325

GNU, 9

Compiler Collection (GCC), 13

debugger, 25

GnuPG, 11

Netcat, 685

goat grass, 612

Godbolt, Matt, 6

The Golden Ratio, 540

Goldmember, 64

goodbit, 530

Google Mock, 324–332

matchers, 327–329

Google Test, 310

assertions, 312

goto statement, 239–240

graph, 454

group (regex), 505

GTEST_FLAG, 310

gtest_main, 310

Guardians of the Galaxy, 539

Gunteroth, Kurt, 113

H

half-open range, 413

Hall, Sir Robert Bryson II, 102

handle, 353

hard link, 552

Harry Potter and the Sorcerer’s Stone (Rowling), 534

hashes, 442

HasSubstr, 328

header-only library, 304

heap, 189–190

data structure, 430

memory region, 365

HeapAlloc, 189–190

hexadecimal integers, 33

Highlander, 121, 173

HippoMocks, 332–336

The Hitchhiker’s Guide to the Galaxy (Adams), liv, 64, 118, 217, 229, 378, 452, 543

hours, 388

HTTP, 667, 676

hue-saturation-value (HSV)representation, 205

hypot, 392

I

IANA (Internet Assigned Numbers Authority), 667

ICMP (Internet Control Message Protocol), 666

IDE (interactive development environment), 3, 6

identifiers, 246

if statement, 15, 225

Illustrative Shorthand (Bronson), 276

imag, 394

imaginary number, 393

imap, 667

implementation vs. interface, 297

implicit-type conversion, 198

include guard, 710

increment operator (++), 185

indirection operator (*), 186

inheritance, 100

vs. implementation, 137

init capture (lambda), 267

InitGoogleMock, 324–325

initialization, 14, 59

expression, 232

list, 416, 447

statement, 226

init statements (for loop), 43

inline, 244

inner product, 632

input operator, 527

input string streams, 539

input validation, 56

inserter, 464

instrumentation, 282

int, 14. See also integer

integer, 14

Boolean conversion, 38

description of, 32

factorization, 643

literal, 33–34

integration test, 282

interactive development environment (IDE), 3, 6

interfaces, 137, 143–144, 297

internal linkage, 92

Internet Assigned Numbers Authority (IANA), 667

Internet Control Message Protocol (ICMP), 666

internet protocol (IP), 666

the internet’s first transmission, 708

intrusive container, 434

invocable type, 255

invoke (a function), 18

Iomega Zip 100, 508

iostream, xlix

vs. printf, 19

IP (internet protocol), 666

irc, 667

IServiceBus, 297

isfinite, 393

IsNull, 328

isinf, 393

isqrt, xxxviii

iterator, xlviii, 407, 412, 463

bidirectional, 468

categories, 471

contiguous, 471

expression, 232

forward, 467

input stream buffer, 547

input, 466

insert, 464

range expression, 235

statement, 43, 230

variables, 44

itoa, xxxix

J

Jabberwocky, xliii

Javascript object notation, 457

Jay and Silent Bob Strike Back, 240

Josuttis, Nicolai, 164, 415, 444, 535

jump statement, 238

junit, 310

K

keyboard interrupt, 699

knuckleball, 224

L

label, 239

Labyris Books, 641

lambda, xlix, 258

constexpr, 268

initializer expression, 266

this capture, 267

LambdaFactory, 267

language linkage, xlv, 711

language support errors, 102

launch policy, 640

lazy evaluation, 640

lcm, 392

leaking memory, 342

leap years, 383

Le, 328

left shift operator <<, 182

lexicographical comparison, 488

library, 5

Life of Brian, 672

linear congruential generator, 214

linkage, 92

linker, 5

Linux, 9

development environment, 9

integer size on, 32

list, 425

listdir, 566

literals, 33, 197

string, 46

LLDB (low level debugger), 25

load factor, 445

local

static variable, 92

variable, 91

locale, 521

lock-free concurrent programming, 653

log, 392

log2, 392

log10, 392

Logger, 138

LoggerType, 136

logical operators, 182

long double, 35

long int, 32

long long int, 32

The Lord of the Rings (Tolkien), 343, 345

Lt, 328

Low Level Debugger (LLDB), 25

ltoa, xxxix

lvalue, 124

M

macOS

development environment, 8

integer size on, 32

macro, 708

magic values, 205

main, 272

make_simple_unique, 177

malloc, 189

manipulators, 533

Marx, Groucho, 99

match condition (Boost Asio), 675

matchers (Google Mock), 327–329

match (regex), 506

The Matrix, 601

max, 392

max heap, 635

maximum load factor, 445

mean (genericizing), 155–158

member, 52

access operator, 185

destruction order, 111

inheritance, 139–140

initialization, 57

initialization order, 111

initializer lists, 83

static, 93

member-of-object operator, 185

member-of-pointer operator, 185

memory fragmentation, 189

memory leaks, 96

memory management, 90, 189

Mercer, Leigh, 520, 595

merging (algorithm), 625

Mersenne Twister, 398

metaprogramming, 178

methods, 55

Meyers, Scott, xxxii, 50, 105, 159, 177, 416, 661–662

mgrep, 707

microseconds, 388

Microsoft Visual C++ Compiler (MSVC), 6

Microsoft Windows, 6

milliseconds, 388

min, 392

minutes, 388

mock, 297

Mock, 332–336

MOCK_CONST_METHOD, 325

mocking, 323

MOCK_METHOD, 325

MockRepository, 332–336

Modern C++ Design: Generic Programming and Design Patterns Applied (Alexandrescu), 178

Modest Mouse, 153

modifier methods (path), 554

modulo %, 183

The Moon is a Harsh Mistress (Heinlein), xl

most vexing parse, 63

move

construction, 160

iterator adaptor, 476

semantics, lv, 122

MoveDetector, 596

multicore processor, 640

multiplication (*), 183

mutable

iterator, 471

lambda, 265

mutex (mutual exclusion algorithm), 649

MyTemplateClass, 150

my_template_function, 151

N

naggy mock, 326

name binding, 178

named capture (lambda), 264

named conversion, 151

named element, 178

namespace, xliii, 216

block, 217

global, 217

scope, 91

using directive, 218

nanoseconds, 388

narrow_cast, 154

NarrowCast, 222

NarrowCaster, 221

narrowing, 154, 222

conversion, 63, 198

ncat, 685

nested initializer lists, 447

netcat, 685

Neuromancer (Gibson), 53

new, 95

new expression, 95

nice mock, 326

Nmap, 689

noexcept, 104

non-member functions, 214

non-type template parameters, 174

norm, 394

NotNull, 328

NOT (!), 182

ntp, 667

null pointer, 76

nullptr, xli, 76, 160

null-terminated strings, 45

nunit, 310

O

object, 13, 89

allocation, 90

automatic storage duration, 90

composition, 137

deallocation, 90

dynamic, 95

initialization, 59

life cycle, li, 89

lifetime, 90

scope, 90

static, 91

storage duration, 89

swap, 346

object-oriented programming, 13

octal integers, 33

one-definition rule, 710

The One True Morty, 212

operands, 39, 182

operator, 39, 182

AND, 40

associativity, 194

address of (&), 68

bracket, 75

comparison, 15, 39

dereference (*), 68, 70

dot (.), 54

logical, 40

member of pointer (arrow operator ->), 71

OR, 40

overloading, 187

precedence, 194

unary/binary/tertiary, 40

unary negation, 40

operator(), 255

operator*, 463

operator++, 463

operator<, 611

operator<<, 525

operator>>, 525

operator delete, 189, 365

operator delete[], 189

operator new, 189, 365

operator new[], 189

optimization, 710

optional, 372

OR (|), 182

OR (||), 182

Ordered (concept), 171

order of execution, 211

output

file streams, 542

iterator, 464

operator, 526

stream buffer iterators, 546

string stream, 538

overflow, 231

overload resolution, 249

override 138

ownership, 342

transferring, 122

Oxford comma, 518

Oxford’s best colleges, 73

P

page (memory), 190

pair, 374

pangram, 276

parallel algorithms, 575

parameter pack type, 177

parameters, 16

partial application, 221, 258

partitioned sequence, 620

partition point, 620

passing an array to a function, 73

path, 552

path variable, 698

PDP-8, 34

Pe’er, Eran, 337

performance test, 282

permission_denied, 102

Pig Latin, 485

ping, 666

plain-old-data classes, 52

pointer/array conversion, 72–74

pointers, 67–76

arithmetic, 74, 75

Boolean conversion, 76

null, 76

vs. references, 77

this, 80

void, 76

polar, 394

polymorphism, 149

compile time, 149

runtime, 133

pop3, 667

port (TCP/UDP), 666

positional arguments, 703

position (stream), 548

POSIX time, 387

pow, 392

pragma, 712

Pratchett, Terry, 412, 447–448

precision, 35

predicate, 164

prefix modifier, 244

preprocessor, 5, 708

PrimeNumberRange, 241

primitive types, 31

printf, 525

format specifiers, 18

format strings, 18

vs. iostream, 19

priority queue, 430

private (access control), 56

private ports, 684

Professional Assembly Language (Blum), xxxix

program

options, 700

support, 692

proj (std::complex), 394

promotion rules, 198

floating-point, 183

property injection, 146

property tree, 454

prototype, 213

prvalue, 124

pseudo-random number engines, 396

public (access control), 56

Pulp Fiction, 540

pure-virtual

classes, 142

method/interfaces, 138

Python, 163

Q

quantifier (regex), 504

queue, 428

R

race condition, 647

RAII (resource acquisition is initialization), liii, 108

and goto, 241

example, unique pointer, 159

random-access iterator, 469

random-access range, 511

randomize, 214

random number

distribution, 397

engine, 396

generator, 214

RandomNumberGenerator, 215

range, 413, 510

ranged-based for loop, 44, 234

declaration, 234

expressions, 234, 235, 466, 637

Rat Thing, 90

raw string literals, 506

ReadOnlyInt, 203

read-only methods, 82

real (std::complex), 394

REAMDE, 223, 227

red, green, refactor, 286

redundant load, 208

Ref, 328

references, xl, 77–86

register (on a CPU), 69

regular expression (regex), 503

rehashing, 445

reinterpret_cast, 152, 153

relative path, 552

relative velocity, 294

remainder, 392

replace (regex), 509

Replicant, 121

REQUIRE, 305

REQUIRE_NOTHROW, 307

REQUIRE_THROWS, 307

REQUIRE_THROWS_AS, 307

requirements, 166

requires expression, 166

ad hoc, 172–173

reseating references, 77

reserved characters, 37

resource acquisition is initialization. See RAII

resource leakage, 160

resource management, 241

rethrowing an exception, 103

return-oriented programs, 69

return statements, 17

reverse half-open range, 478

reverse iterator adaptor, 477

right shift >>, 182

Ripley, Brian D., 396

Roland TR-808, 350

root name, 552

round, 393

rule of five, 129

rule of zero, 130

runtime polymorphism, 133

rvalue, 124

S

sandbox, 697

scheduler (of threads), 640

Schrödinger, Erwin, 371

scope, 90

global, 91

namespace, 91

scoped enums, 50

ScopedOathbreakers, 350

scoped pointer, 342

search

algorithm, 590

regex, 509

std::string, 494

seconds, 388

SECTION, 308

security vulnerability, 76

selection statement, 225

sequence container, 408

sequence operation

mutating, 592

non-modifying, 576

server, 666

service, 283

service bus architecture, 283

setter, 56, 287

SetUp, 314

Seveneves (Stephenson), 50

Shaltanac, 218

shared pointer, 355

shared state, 641

Shift5, 525

Short Circuit, 42

short int, 32

SIGABRT, 699

SIGFPE, 699

SIGILL, 699

SIGINT, 699

signature, 213

signed char, 37

sign function, 226

SIGSEGV, 699

SIGTERM, 699

SimpleString class, 107

with custom move and copy, 128

SimpleUniquePointer, 159

sin, 392, 394

single-pass range, 511

single precision, 35

sinh, 393

sizeof, 41, 45

sizeof..., 252

size_t, 41

skeleton class, 286

Skynet, 75

Slaughterhouse-Five (Vonnegut), 599, 605

small string optimization, 485

smart pointers, liv, 341

smtp, 667

Snow Crash (Stephenson), 90

socket, 666

sorting operation, 611

The Sound of Music, 599

source files, 4

SpeedUpdate, 283

spin lock, 651

sqrt, 392

square, 162

SquareMatrix, 458

ssh, 667

stable sort, 611

stack, 427

call, 105

container, 105

stack frame, 106

standard

exception classes, 101

stream operators, 525

template library, 407

Star Trek, 593

StartsWith, 328

StrCaseEq, 328

StrCaseNe, 328

StrEq, 328

StrNeq, 328

statement, 211

automatic storage duration, 212

break, 238

constexpr if, 227

compound, 15

conditional, 15

continue, 239

goto, 239, 240

if, 15, 225

initialization, 226

iteration, 230

jump, 238

label, 239

return, 17

selection, 225

switch, 229

static, 91, 92

function, 244

members, 93

object, 91

storage duration, 91

variables, 91

static_assert, 173

static_cast, 152, 222

std::

abort, 696

accumulate, 630

adjacent_difference, 633

adjacent_find, 585

advance, 472

all_of, 576

allocate, 366

any, 378

array, 408, 470

async, 256, 640

atexit, 693

atomic, 208, 653

atomic_bool, 653

atomic_char, 653

atomic_char16_t, 653

atomic_char32_t, 653

atomic_int, 653

atomic_llong, 653

atomic_long, 653

atomic_short, 653

atomic_uchar, 653

atomic_uint, 653

atomic_ullong, 653

atomic_ulong, 653

atomic_ushort, 653

atomic_wchar_t, 653

back_insert_iterator, 464

back_inserter, 464

bad_alloc, 102, 191

bad_any_cast, 378

bad_function_call, 269

basic_iostream, 524

basic_istream, 524

basic_istringstream, 539

basic_ofstream, 542

basic_ostream, 524

basic_regex, 506

basic_string, 482

basic_string_view, 500

bernoulli_distribution, 400

binary_search, 620

binomial_distribution, 400

bitset, 432

boolalpha, 535

byte, 40

cauchy_distribution, 399

cerr, 525

char_traits, 482

chi_squared_distribution, 399

chrono, 387, 388, 389, 664

chrono_duration, 664

cin, 525

clamp, 628

clog, 525

complex, 393

condition_variable, 656

copy, 592

copy_backward, 594

count, 586

cout, 525

csub_match, 508

dec, 535

declaring, 269

deque, 424, 465, 470, 471

destroy, 636

destroy_at, 636

destroy_n, 636

distance, 475

divides, 629

domain_error, 101

enable_shared_from_this, 685

endl, xlix, 533

ends, 533

equal, 588

equal_range, 619

errc, 102

exception, 101

exclusive_scan, 636

execution, 575, 658

exit, 695

exponential_distribution, 400

extreme_value_distribution, 400

filesystem, 552, 557564

fill, 601

find, 581

find_end, 582

find_first_of, 584

find_if, 581

find_if_not, 581

fisher_f_distribution, 399

fixed, 535

flush, 533

for_each, 579

for_each_n, 580

forward, 177

forward_list, 467

front_insert_iterator, 464

front_inserter, 464

function, 269, 297

future, 641

future_status, 642

gamma_distribution, 400

generate, 602

geometric_distribution, 400

get, 376

get_if, 380

getenv, 698

hash, 443

hex, 535

imag, 393

includes, 636

inclusive_scan, 636

initializer_list, 457

inner_product, 632

insert_iterator, 464

inserter, 464

invalid_argument, 101, 499

ios_base, 542, 548

iota, 630

is_heap, 635

is_heap_until, 635

is_partitioned, 621

is_permutation, 589

is_sorted, 615

istream, 528

istringstream, 539

iter_swap, 475

launch, 640, 688

length_error, 101

less, 430

list, 425, 469

literals, 388, 389

locale, 521

lock_guard, 651

logic_error, 101

lognormal_distribution, 399

lower_bound, 617

make_heap, 635

make_move_iterator, 476

make_reverse_iterator, 478

make_shared, 356

make_unique, 350

map, 446

match_results, 507

max, 626

max_element, 627

merge, 625

min, 626

min_element, 627

minmax, 626

minus, 629

mismatch, 587

modulus, 629

move, 125, 161

mtt19937_64, 396

multimap, 452

multiplies, 629

multiset, 441

mutex, 649

next, 473

noboolalpha, 535

none_of, 578

normal_distribution, 399

nth_element, 616

nullopt, 372

numeric_limits, 188, 401

oct, 535

optional, 372

ostream, 529

ostringstream, 538

out_of_range, 101, 448, 499

overflow_error, 102

pair, 374, 455, 627

partial_sort, 614

partial_sum, 634

partition, 622

partition_copy, 622

plus, 629

poisson_distribution, 400

pop_heap, 635

prev, 473

priority_queue, 430

push_heap, 635

queue, 429

quick_exit, 696

quoted, 554

random_device, 396

ratio, 403

ratio_multiply, 403

real, 393

recursive_mutex, 649

recursive_timed_mutex, 649

reduce, 631

regex, 506

regex_replace, 509

remove, 603

replace, 600

reverse, 606

runtime_error, 98, 102

rvalue, 126

sample, 607

scientific, 535

scoped_lock, 651

search, 590

search_n, 591

set, 435

set_difference, 636

set_intersection, 636

set_symmetric_difference, 636

set_union, 636

setprecision, 533, 535

setw, 535

shared_lock, 651

shared_mutex, 649

shared_ptr, 356

shared_timed_mutex, 649

shuffle, 609

signal, 699

size, 45

sort, xlix, 611, 659–660

sort_heap, 635

stable_partition, 624

stable_sort, 612

stack, 427

string, 482, 511

string_literals, 484

strncpy, 109

student_t_distribution, 399

sub_match, 508

swap_ranges, 597

system, 697

system_error, 102

terminate, 105, 694

this_thread, 389, 664, 658

thread, 658

timed_mutex, 649

transform, 598, 660

transform_exclusive_scan, 636

transform_inclusive_scan, 636

transform_reduce, 636

tuple, 376

type_traits, 188

u16string, 482

u16string_view, 500

u32string, 482

u32string_view, 500

underflow_error, 102

uniform_int_distribution, 398

uniform_real_distribution, 399

uninitialized_copy, 636

uninitialized_copy_n, 636

uninitialized_default_construct, 636

uninitialized_default_construct_n, 636

uninitialized_fill, 636

uninitialized_fill_n, 636

uninitialized_move, 636

uninitialized_move_n, 636

uninitialized_value_construct, 636

uninitialized_value_construct_n, 636

unique, 605

unique_lock, 651

unique_ptr, liv, 349

unordered_map, 453

unordered_multimap, 453

unordered_multiset, 446

unordered_set, 442

upper_bound, 618

variant, 379

vector, xlix, 415, 470

wait_for, 642

wait_until, 642

wcerr, 525

wcin, 525

wclog, 525

wcout, 525

wcsub_match, 508

weak_ptr, 361

weibull_distribution, 400

wistringstream, 539

wostringstream, 538

wregex, 506

ws, 533

wssub_match, 508

wstring, 482

wstring_view, 500

stderr, 525

stdin, 525

stdlib, i, xlviii, xxxii, xlviiixlix

stdout, 525

step function, 17

Stopwatch, 479, 643

storage duration, li, 89–98

storage type (any), 378

stormtroopers, 79

stream, 523

buffer classes, 546

state, 530

strict mock, 326

string, 45

as array, 46

conversion, 498

literal, 46

SimpleString class, 107

stream classes, 538

view, 500

strlen, 109

Stroustrup, Bjarne, xxv, xxxii xxxvii, 137, 159, 198, 415

struct, 52

vs. class, 57

structured binding, 222

declaration, 114

structured exception handling, lii

stub, 289

submatch (regex), 507

subscribe, 283

subscript operator [], 185

subtraction -, 183

suffix modifier, 244

sum, 29

Super C, xxxix

Sutton, Andrew, 170

switch statement, 50, 229

symbolic link, 552

synchronization primitive, 649

syntactic requirements, 166

system ports, 684

T

The Taming of the Shrew (Shakespeare), 82

tan, 392, 394

tanh, 393

Taxonomist, 62

TCP (Transmission Control Protocol), 666

TearDown, 314

tebibyte, 498

telnet, 667

template, l, 149

declaring, 150

function, 151

instantiating, 151

instantiation, 150

metaprogramming, 178

parameter pack, 251

partial parameter application, 221

specialization, 178

type alias, 221

type checking, 161

type deduction, 158

variadic, 177

tequila, 247

The Terminator, 75, 106

ternary conditional operator, 186

ternary operator, liii

Tesla, Nikola, 72

test

acceptance, 282

integration, 282

performance, 282

unit, 282

TEST, 311

test-driven development, 285

TEST_F, 314

test fixture classes, 314

test harness, 289

text editor, 13

this pointer, 80

thread, 94

thread of execution, 94, 640

thread-safe code, 94

throw, 98

throwable objects, 98

timed_out, 102

TimerClass class, 131

Times, 329

toa, xl

tokenizer, 520

Tommy Tutone, 330

Top Gun, 642

Tracer, 96, 161, 212, 693

traceroute, 666

Trainor, Meghan, 139

Tralfamadore, 599

transferring ownership, 350

transitive, 611

Transmission Control Protocol (TCP), 666

traversal category, 511

treedir, 568

tribool, 370

Trompeloeil, 337

try-catch block, lii, 99

tuple, 376

type, 14, 31

alias, 220, 225

built-in, 31

character, 36

conversion, 198

erasure, 76

function, 178

fundamental, 31

integer, 32

narrowing, 222

parameters, 178

primitive, 31

reference, 67

support library, 164

typename, 150

template parameter, 174

traits, 164

typedef, xliii

U

Ubuntu, 10

UDP (User Datagram Protocol), 666

ultoa, xxxix

unary minus -, 183

unary plus +, 183

undefined behavior, 75

unformatted stream operations, 525

Unicode, 38, 46

uniform initialization, 64

union, 53, 379

unique pointer, 159, 349

United States Army Cyber Command, 678

United States Cyber Command Seal, 473

United States Naval Observatory, 383

unit test, 282

unit-test program, 289

universal character names, 38

Unix Epoch, 387

unscoped enums, 50

unsigned char, 37

User Datagram Protocol (UDP), 666

user-defined

conversion, 203

exceptions, 104

literal, 197

type, li, 49

user ports, 684

using directive, 218

V

va_arg, 250

va_copy, 250

va_end, 250

va_list, 250

value category, 124

value_of, 228

value parameters, 178

Vandevoorde, David, 178

variable, 14, 89

declaring, 14

local, 91

local static, 92

static, 91

signed/unsigned, 32

variadic

arguments, 250

functions, 250

templates, 177, 251

variant, 379

va_start, 250

vectorized algorithm, 575

virtual, 138, 140, 245

VirtualAllocEx, 190

virtual destructor, 138

virtual methods, 140–142

Visual Studio, 6–8

debugger, 21

void, 42

void pointer, 76

volatile, 207, 246

W

wait state, 651

wall clock, 387

Wandbox, 6

wchar_t, 37

weak pointer, 360

while loop, 230

White House phone number, 504

wide character, 37

Windows, 6

binaries, 38

carriage return, 13

Component Object Model, 363

development environment, 6

integer size on, 32

Windows epoch, 387

Wodehouse, P.G., 374

word boundaries, 53

wprintf, 46

X

Xcode, 8

debugger, 23

XOR ^, 182

xUnit, 310

xvalue, 124

Y

Yoda, 240, 531, 601

Z

Zalewski, Michał, 677

Zbikowski, Mark, 38

zero-overhead principle, xxxvii

Zero Wing, 139

ZIP codes, 34

Zork I, 34

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset