Signed Edition Sweepstakes
 
 

Recently Viewed clear list


Original Essays | September 15, 2014

Lois Leveen: IMG Forsooth Me Not: Shakespeare, Juliet, Her Nurse, and a Novel



There's this writer, William Shakespeare. Perhaps you've heard of him. He wrote this play, Romeo and Juliet. Maybe you've heard of it as well. It's... Continue »

spacer
Qualifying orders ship free.
$87.75
New Hardcover
Ships in 1 to 3 days
Add to Wishlist
available for shipping or prepaid pickup only
Available for In-store Pickup
in 7 to 12 days
Qty Store Section
1 Remote Warehouse Computer Languages- C++

C++ Templates: The Complete Guide

by

C++ Templates: The Complete Guide Cover

 

Synopses & Reviews

Publisher Comments:

Templates are among the most powerful features of C++, but they are too often neglected, misunderstood, and misused. C++ Templates: The Complete Guide provides software architects and engineers with a clear understanding of why, when, and how to use templates to build and maintain cleaner, faster, and smarter software more efficiently.

C++ Templates begins with an insightful tutorial on basic concepts and language features. The remainder of the book serves as a comprehensive reference, focusing first on language details, then on a wide range of coding techniques, and finally on advanced applications for templates. Examples used throughout the book illustrate abstract concepts and demonstrate best practices.

Readers learn

  • The exact behaviors of templates
  • How to avoid the pitfalls associated with templates
  • Idioms and techniques, from the basic to the previously undocumented
  • How to reuse source code without threatening performance or safety
  • How to increase the efficiency of C++ programs
  • How to produce more flexible and maintainable software

This practical guide shows programmers how to exploit the full power of the template features in C++.

The companion Web site at http://www.josuttis.com/tmplbook/ contains sample code and additional updates.

0201734842B09172002

Book News Annotation:

The authors of this textbook urge readers to see them as a scientist- engineer pair, producing a combination C++ template tutorial with a detailed reference. They introduce language elements and design elements of the template feature of the programming language and provide coverage of template syntax and semantics. Techniques covered include static polymorphism, policy classes, metaprogramming, and expression templates. Also discussed is the C++ standard library, constructed largely with templates. Readers are expected to know C++ before approaching the book.
Annotation c. Book News, Inc., Portland, OR (booknews.com)

Synopsis:

Providing complete and accurate information on using templates in C++, this volume is designed for C++ programmers with a basic understanding of the STL.

Synopsis:

With the greatly increased use of templates, there is a real need in the C++ community for this information. This book is the next C++ classic, acting as both a complete reference as well as a tutorial. It emphasizes the practical use of templates, and includes real-world examples.

Synopsis:

-- The first book to provide complete and accurate information on using templates in C++.

-- Great author team - both are widely respected, and bring complementary viewpoints to the book.

-- With the greatly increased use of templates there is a real need in the C++ community for this information.

This book will be the next C++ classic. Although templates have been part of C++ for well over a decade, they still lead to misunderstanding, misuse, and controversy. At the same time, they are increasingly found to be powerful instruments for the development of cleaner, faster, and smarter software. This has made templates one of the hottest topics in the C++ community. This book will be both a complete reference as well as a tutorial. It will emphasize the practical use of templates, and will include real-world examples. Every working C++ programmer will need a copy of this book for his or her library.

About the Author

David Vandevoorde is an engineer at the Edison Design Group. He is an active member of the ANSI C++ Standards Committee, and a cofounder of the newsgroup comp.lang.c++.moderated. A graduate of the Brussels Free University and the Rensselaer Polytechnic Institute, his interests include algorithm development, programming languages, and teaching. See www.vandevoorde.com.

Nicolai M. Josuttis is an independent technical consultant who designs object-oriented software for the telecommunications, traffic, finance, and manufacturing industries. He is an active member of the C++ Standards Committee Library Working Group. Nicolai has written several books on object-oriented programming and C++. See www.josuttis.com.

0201734842AB09172002

Table of Contents

Preface.

Acknowledgments.

1. About This Book.

What You Should Know Before Reading This Book.

Overall Structure of the Book.

How to Read This Book.

Some Remarks About Programming Style.

The Standard versus Reality.

Example Code and Additional Information.

Feedback.

I. THE BASICS.

2. Function Templates.

A First Look at Function Templates.

Defining the Template.

Using the Template.

Argument Deduction.

Template Parameters.

Overloading Function Templates.

Summary.
3. Class Templates.

Implementation of Class Template Stack.

Declaration of Class Templates.

Implementation of Member Functions.

Use of Class Template Stack.

Specializations of Class Templates.

Partial Specialization.

Default Template Arguments.

Summary.
4. Nontype Template Parameters.

Nontype Class Template Parameters.

Nontype Function Template Parameters.

Restrictions for Nontype Template Parameters.

Summary.
5. Tricky Basics.

Keyword typename.

Using this->.

Member Templates.

Template Template Parameters.

Zero Initialization.

Using String Literals as Arguments for Function Templates.

Summary.
6. Using Templates in Practice.

The Inclusion Model.

Linker Errors.

Templates in Header Files.

Explicit Instantiation.

Example of Explicit Instantiation.

Combining the Inclusion Model and Explicit Instantiation.

The Separation Model.

The Keyword export.

Limitations of the Separation Model.

Preparing for the Separation Model.

Templates and inline.

Precompiled Headers.

Debugging Templates.

Decoding the Error Novel.

Shallow Instantiation.

Long Symbols.

Tracers.

Oracles.

Archetypes.

Afternotes.

Summary.
7. Basic Template Terminology.

“Class Template” or “Template Class”?

Instantiation and Specialization.

Declarations versus Definitions.

The One-Definition Rule.

Template Arguments versus Template Parameters.

II. TEMPLATES IN DEPTH.

8. Fundamentals in Depth.

Parameterized Declarations.

Virtual Member Functions.

Linkage of Templates.

Primary Templates.

Template Parameters.

Type Parameters.

Nontype Parameters.

Template Template Parameters.

Default Template Arguments.

Template Arguments.

Function Template Arguments.

Type Arguments.

Nontype Arguments.

Template Template Arguments.

Equivalence.

Friends.

Friend Functions.

Friend Templates.

Afternotes.
9. Names in Templates.

Name Taxonomy.

Looking Up Names.

Argument-Dependent Lookup.

Friend Name Injection.

Injected Class Names.

Parsing Templates.

Context Sensitivity in Nontemplates.

Dependent Names of Types.

Dependent Names of Templates.

Dependent Names in Using-Declarations.

ADL and Explicit Template Arguments.

Derivation and Class Templates.

Nondependent Base Classes.

Dependent Base Classes.

Afternotes.
10. Instantiation.

On-Demand Instantiation.

Lazy Instantiation.

The C++ Instantiation Model.

Two-Phase Lookup.

Points of Instantiation.

The Inclusion and Separation Models.

Looking Across Translation Units.

Examples.

Implementation Schemes.

Greedy Instantiation.

Queried Instantiation.

Iterated Instantiation.

Explicit Instantiation.

Afternotes.
11. Template Argument Deduction.

The Deduction Process.

Deduced Contexts.

Special Deduction Situations.

Allowable Argument Conversions.

Class Template Parameters.

Default Call Arguments.

The Barton-Nackman Trick.

Afternotes.
12. Specialization and Overloading.

When “Generic Code” Doesn't Quite Cut It.

Transparent Customization.

Semantic Transparency.

Overloading Function Templates.

Signatures.

Partial Ordering of Overloaded Function Templates.

Formal Ordering Rules.

Templates and Nontemplates.

Explicit Specialization.

Full Class Template Specialization.

Full Function Template Specialization.

Full Member Specialization.

Partial Class Template Specialization.

Afternotes.
13. Future Directions.

The Angle Bracket Hack.

Relaxed typename Rules.

Default Function Template Arguments.

String Literal and Floating-Point Template Arguments.

Relaxed Matching of Template Template Parameters.

Typedef Templates.

Partial Specialization of Function Templates.

The typeof Operator.

Named Template Arguments.

Static Properties.

Custom Instantiation Diagnostics ..

Overloaded Class Templates.

List Parameters.

Layout Control.

Initializer Deduction.

Function Expressions.

Afternotes.

III. TEMPLATES AND DESIGN.

14. The Polymorphic Power of Templates.

Dynamic Polymorphism.

Static Polymorphism.

Dynamic versus Static Polymorphism.

New Forms of Design Patterns.

Generic Programming.

Afternotes.
15. Traits and Policy Classes.

An Example: Accumulating a Sequence.

Fixed Traits.

Value Traits.

Parameterized Traits.

Policies and Policy Classes.

Traits and Policies: What's the Difference?

Member Templates versus Template Template Parameters.

Combining Multiple Policies and/or Traits.

Accumulation with General Iterators.

Type Functions.

Determining Element Types.

Determining Class Types.

References and Qualifiers.

Promotion Traits.

Policy Traits.

Read-only Parameter Types.

Copying, Swapping, and Moving.

Afternotes.
16. Templates and Inheritance.

Named Template Arguments.

The Empty Base Class Optimization (EBCO).

Layout Principles.

Members as Base Classes.

The Curiously Recurring Template Pattern (CRTP).

Parameterized Virtuality.

Afternotes.
17. Metaprograms.

A First Example of a Metaprogram.

Enumeration Values versus Static Constants.

A Second Example: Computing the Square Root.

Using Induction Variables.

Computational Completeness.

Recursive Instantiation versus Recursive Template Arguments.

Using Metaprograms to Unroll Loops.

Afternotes.
18. Expression Templates.

Temporaries and Split Loops.

Encoding Expressions in Template Arguments.

Operands of the Expression Templates.

The Array Type.

The Operators.

Review.

Expression Templates Assignments.

Performance and Limitations of Expression Templates.

Afternotes.

IV. ADVANCED APPLICATIONS.

19. Type Classification.

Determining Fundamental Types.

Determining Compound Types.

Identifying Function Types.

Enumeration Classification with Overload Resolution.

Determining Class Types.

Putting It All Together.

Afternotes.
20. Smart Pointers.

Holders and Trules.

Protecting Against Exceptions.

Holders.

Holders as Members.

Resource Acquisition Is Initialization.

Holder Limitations.

Copying Holders.

Copying Holders Across Function Calls.

Trules.

Reference Counting.

Where Is the Counter?

Concurrent Counter Access.

Destruction and Deallocation.

The CountingPtr Template.

A Simple Noninvasive Counter.

A Simple Invasive Counter Template.

Constness.

Implicit Conversions.

Comparisons.

Afternotes.
21. Tuples.

Duos.

Recursive Duos.

Number of Fields.

Type of Fields.

Value of Fields.

Tuple Construction.

Afternotes.
22. Function Objects and Callbacks.

Direct, Indirect, and Inline Calls.

Pointers and References to Functions.

Pointer-to-Member Functions.

Class Type Functors.

A First Example of Class Type Functors.

Type of Class Type Functors.

Specifying Functors.

Functors as Template Type Arguments.

Functors as Function Call Arguments.

Combining Function Call Parameters and Template Type Parameters.

Functors as Nontype Template Arguments.

Function Pointer Encapsulation.

Introspection.

Analyzing a Functor Type.

Accessing Parameter Types.

Encapsulating Function Pointers.

Function Object Composition.

Simple Composition.

Mixed Type Composition.

Reducing the Number of Parameters.

Value Binders.

Selecting the Binding.

Bound Signature.

Argument Selection.

Convenience Functions.

Functor Operations: A Complete Implementation.

Afternotes.

APPENDIXES.

A: The One-Definition Rule.

Translation Units.

Declarations and Definitions.

The One-Definition Rule in Detail.

One-per-Program Constraints.

One-per-Translation Unit Constraints.

Cross-Translation Unit Equivalence Constraints.
B: Overload Resolution.

When Does Overload Resolution Kick In?

Simplified Overload Resolution.

The Implied Argument for Member Functions.

Refining the Perfect Match.

Overloading Details.

Prefer Nontemplates.

Conversion Sequences.

Pointer Conversions.

Functors and Surrogate Functions.

Other Overloading Contexts.
Bibliography.

Newsgroups.

Books and Web Sites.

Glossary.

Index. 0201734842T10072002

Product Details

ISBN:
9780201734843
Author:
Vandevoorde, David
Author:
Josuttis, Nicolai M.
Publisher:
Addison-Wesley Professional
Location:
Boston
Subject:
Programming Languages - C
Subject:
Programming Languages - General
Subject:
C (computer program language)
Subject:
Programming - General
Subject:
Microsoft Visual C++
Subject:
Standard template library
Subject:
C
Subject:
Computer Languages-C++
Copyright:
Edition Description:
Includes bibliographical references and index.
Series Volume:
no. 503/504
Publication Date:
November 2002
Binding:
HARDCOVER
Grade Level:
Professional and scholarly
Language:
English
Illustrations:
Yes
Pages:
552
Dimensions:
9.5 x 7.5 x 1.2 in 1018 gr

Other books you might like

  1. C++ Standard Library: A Tutorial and... Used Hardcover $27.00
  2. Jruby Cookbook Used Trade Paper $8.50
  3. Modern C++ Design: Generic... New Trade Paper $64.99
  4. Effective STL: 50 Specific Ways to... New Trade Paper $54.99
  5. Eclipse Distilled New Trade Paper $31.50
  6. Debugging ASP.Net (Landmark) New Trade Paper $31.50

Related Subjects

Computers and Internet » Computer Languages » C++
Languages » ESL » General

C++ Templates: The Complete Guide New Hardcover
0 stars - 0 reviews
$87.75 In Stock
Product details 552 pages Addison-Wesley Professional - English 9780201734843 Reviews:
"Synopsis" by , Providing complete and accurate information on using templates in C++, this volume is designed for C++ programmers with a basic understanding of the STL.
"Synopsis" by , With the greatly increased use of templates, there is a real need in the C++ community for this information. This book is the next C++ classic, acting as both a complete reference as well as a tutorial. It emphasizes the practical use of templates, and includes real-world examples.
"Synopsis" by , -- The first book to provide complete and accurate information on using templates in C++.

-- Great author team - both are widely respected, and bring complementary viewpoints to the book.

-- With the greatly increased use of templates there is a real need in the C++ community for this information.

This book will be the next C++ classic. Although templates have been part of C++ for well over a decade, they still lead to misunderstanding, misuse, and controversy. At the same time, they are increasingly found to be powerful instruments for the development of cleaner, faster, and smarter software. This has made templates one of the hottest topics in the C++ community. This book will be both a complete reference as well as a tutorial. It will emphasize the practical use of templates, and will include real-world examples. Every working C++ programmer will need a copy of this book for his or her library.

spacer
spacer
  • back to top
Follow us on...




Powell's City of Books is an independent bookstore in Portland, Oregon, that fills a whole city block with more than a million new, used, and out of print books. Shop those shelves — plus literally millions more books, DVDs, and gifts — here at Powells.com.