C++ template metaprogramming: concepts, tools, and techniques from boost and beyond
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Boston
Addison-Welsley
2007
|
Ausgabe: | 4. print. |
Schriftenreihe: | The C++ in-depth series
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XIV, 373 S. graph. Darst. 1 CD-ROM (12 cm) |
ISBN: | 0321227255 9780321227256 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV035403688 | ||
003 | DE-604 | ||
005 | 00000000000000.0 | ||
007 | t | ||
008 | 090331s2007 xxud||| |||| 00||| eng d | ||
020 | |a 0321227255 |c pbk. : alk. paper |9 0-321-22725-5 | ||
020 | |a 9780321227256 |9 978-0-321-22725-6 | ||
035 | |a (OCoLC)254397672 | ||
035 | |a (DE-599)BVBBV035403688 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
044 | |a xxu |c US | ||
049 | |a DE-29T | ||
050 | 0 | |a QA76.73.C153 | |
082 | 0 | |a 005.133 | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Abrahams, David |e Verfasser |4 aut | |
245 | 1 | 0 | |a C++ template metaprogramming |b concepts, tools, and techniques from boost and beyond |c David Abrahams, Aleksey Gurtovoy |
250 | |a 4. print. | ||
264 | 1 | |a Boston |b Addison-Welsley |c 2007 | |
300 | |a XIV, 373 S. |b graph. Darst. |e 1 CD-ROM (12 cm) | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a The C++ in-depth series | |
650 | 4 | |a aC++ (Computer program language) | |
650 | 4 | |a aComputer programming | |
650 | 0 | 7 | |a Template |0 (DE-588)4265509-2 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Metaprogrammierung |0 (DE-588)4199820-0 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a C++ |0 (DE-588)4193909-8 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a C++ |0 (DE-588)4193909-8 |D s |
689 | 0 | 1 | |a Template |0 (DE-588)4265509-2 |D s |
689 | 0 | 2 | |a Metaprogrammierung |0 (DE-588)4199820-0 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Gurtovoy, Aleksey |e Sonstige |4 oth | |
856 | 4 | 2 | |m HBZ Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017324294&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-017324294 |
Datensatz im Suchindex
_version_ | 1804138832665247744 |
---|---|
adam_text | Contents
Preface ix
Acknowledgments xi
Making the Most of This Book xiii
Chapter 1 Introduction 1
1.1 Getting Started 1
1.2 So What s a Metaprogram? 2
1.3 Metaprogramming in the Host Language 3
1.4 Metaprogramming in C++ 3
1.5 Why Metaprogramming? 6
1.6 When Metaprogramming? 8
1.7 Why a Metaprogramming Library? 9
Chapter 2 Traits and Type Manipulation 11
2.1 Type Associations 11
2.2 Metafunctions 15
2.3 Numerical Metafunctions 17
2.4 Making Choices at Compile Time 18
2.5 A Brief Tour of the Boost Type Traits Library 24
2.6 Nullary Metafunctions 29
2.7 Metafunction Definition 29
2.8 History 30
2.9 Details 31
2.10 Exercises 34
Chapter 3 A Deeper Look at Metafunctions 37
3.1 Dimensional Analysis 37
3.2 Higher-Order Metafunctions 48
3.3 Handling Placeholders 50
3.4 More Lambda Capabilities 53
3.5 Lambda Details 53
3.6 Details 57
3.7 Exercises 59
Chapter 4 Integral Type Wrappers and Operations 61
4.1 Boolean Wrappers and Operations 61
4.2 Integer Wrappers and Operations 69
4.3 Exercises 74
Chapter 5 Sequences and Iterators 77
5.1 Concepts 77
5.2 Sequences and Algorithms 78
5.3 Iterators 79
5.4 Iterator Concepts 80
5.5 Sequence Concepts 83
5.6 Sequence Equality 89
5.7 Intrinsic Sequence Operations 90
5.8 Sequence Classes 91
5.9 Integral Sequence Wrappers 95
5.10 Sequence Derivation 96
5.11 Writing Your Own Sequence 97
5.12 Details 108
5.13 Exercises 109
Chapter 6 Algorithms 113
6.1 Algorithms, Idioms, Reuse, and Abstraction 113
6.2 Algorithms in the MPL 115
6.3 Inserters 117
6.4 Fundamental Sequence Algorithms 119
6.5 Querying Algorithms 122
6.6 Sequence Building Algorithms 123
6.7 Writing Your Own Algorithms 127
6.8 Details 127
6.9 Exercises 128
Chapter 7 Views and Iterator Adaptors 131
7.1 A Few Examples 131
7.2 View Concept 138
7.3 Iterator Adaptors 138
7.4 Writing Your Own View 139
7.5 History 141
7.6 Exercises 141
Chapter 8 Diagnostics 143
8.1 Debugging the Error Novel 143
8.2 Using Tools for Diagnostic Analysis 155
8.3 Intentional Diagnostic Generation 158
8.4 History 172
8.5 Details 173
8.6 Exercises 174
Chapter 9 Crossing the Compile-Time/Runtime Boundary 175
9.1 for_each 175
9.2 Implementation Selection 178
9.3 Object Generators 183
9.4 Structure Selection 185
9.5 Class Composition 190
9.6 (Member) Function Pointers as Template Arguments 194
9.7 Type Erasure 196
9.8 The Curiously Recurring Template Pattern 203
9.9 Explicitly Managing the Overload Set 209
9.10 The si zeof Trick 212
9.11 Summary 213
9.12 Exercises 213
Chapter 10 Domain-Specific Embedded Languages 215
10.1 A Little Language 215
10.2 ...Goes a Long Way 217
10.3 DSLs, Inside Out 226
10.4 C++as the Host Language 229
10.5 Blitz++and Expression Templates 231
10.6 General-Purpose DSELs 237
10.7 The Boost Spirit Library 247
10.8 Summary 254
10.9 Exercises 254
Chapter 11A DSEL Design Walkthrough 257
11.1 Finite State Machines 257
11.2 Framework Design Goals 260
11.3 Framework Interface Basics 261
11.4 Choosing a DSL 262
11.5 Implementation 269
11.6 Analysis 276
11.7 Language Directions 277
11.8 Exercises 278
Appendix A An Introduction to Preprocessor Metaprogramming 281
A.I Motivation 281
A.2 Fundamental Abstractions of the Preprocessor 283
A.3 Preprocessor Library Structure 285
A.4 Preprocessor Library Abstractions 286
A.5 Exercise 305
Appendix B The typename and tempi ate Keywords 307
B.I The Issue 308
B.2 The Rules 312
Appendix C Compile-Time Performance 323
C.I The Computational Model 323
C.2 Managing Compilation Time 326
C.3 The Tests 326
Appendix 0 MPL Portability Summary 343
Bibliography 345
Index 349
|
any_adam_object | 1 |
author | Abrahams, David |
author_facet | Abrahams, David |
author_role | aut |
author_sort | Abrahams, David |
author_variant | d a da |
building | Verbundindex |
bvnumber | BV035403688 |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.73.C153 |
callnumber-search | QA76.73.C153 |
callnumber-sort | QA 276.73 C153 |
callnumber-subject | QA - Mathematics |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)254397672 (DE-599)BVBBV035403688 |
dewey-full | 005.133 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.133 |
dewey-search | 005.133 |
dewey-sort | 15.133 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 4. print. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01781nam a2200469zc 4500</leader><controlfield tag="001">BV035403688</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">00000000000000.0</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">090331s2007 xxud||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0321227255</subfield><subfield code="c">pbk. : alk. paper</subfield><subfield code="9">0-321-22725-5</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780321227256</subfield><subfield code="9">978-0-321-22725-6</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)254397672</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV035403688</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxu</subfield><subfield code="c">US</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-29T</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.73.C153</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.133</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Abrahams, David</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">C++ template metaprogramming</subfield><subfield code="b">concepts, tools, and techniques from boost and beyond</subfield><subfield code="c">David Abrahams, Aleksey Gurtovoy</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">4. print.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Boston</subfield><subfield code="b">Addison-Welsley</subfield><subfield code="c">2007</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XIV, 373 S.</subfield><subfield code="b">graph. Darst.</subfield><subfield code="e">1 CD-ROM (12 cm)</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">The C++ in-depth series</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">aC++ (Computer program language)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">aComputer programming</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Template</subfield><subfield code="0">(DE-588)4265509-2</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Metaprogrammierung</subfield><subfield code="0">(DE-588)4199820-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">C++</subfield><subfield code="0">(DE-588)4193909-8</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">C++</subfield><subfield code="0">(DE-588)4193909-8</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Template</subfield><subfield code="0">(DE-588)4265509-2</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="2"><subfield code="a">Metaprogrammierung</subfield><subfield code="0">(DE-588)4199820-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Gurtovoy, Aleksey</subfield><subfield code="e">Sonstige</subfield><subfield code="4">oth</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HBZ Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017324294&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-017324294</subfield></datafield></record></collection> |
id | DE-604.BV035403688 |
illustrated | Illustrated |
indexdate | 2024-07-09T21:34:27Z |
institution | BVB |
isbn | 0321227255 9780321227256 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-017324294 |
oclc_num | 254397672 |
open_access_boolean | |
owner | DE-29T |
owner_facet | DE-29T |
physical | XIV, 373 S. graph. Darst. 1 CD-ROM (12 cm) |
publishDate | 2007 |
publishDateSearch | 2007 |
publishDateSort | 2007 |
publisher | Addison-Welsley |
record_format | marc |
series2 | The C++ in-depth series |
spelling | Abrahams, David Verfasser aut C++ template metaprogramming concepts, tools, and techniques from boost and beyond David Abrahams, Aleksey Gurtovoy 4. print. Boston Addison-Welsley 2007 XIV, 373 S. graph. Darst. 1 CD-ROM (12 cm) txt rdacontent n rdamedia nc rdacarrier The C++ in-depth series aC++ (Computer program language) aComputer programming Template (DE-588)4265509-2 gnd rswk-swf Metaprogrammierung (DE-588)4199820-0 gnd rswk-swf C++ (DE-588)4193909-8 gnd rswk-swf C++ (DE-588)4193909-8 s Template (DE-588)4265509-2 s Metaprogrammierung (DE-588)4199820-0 s DE-604 Gurtovoy, Aleksey Sonstige oth HBZ Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017324294&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Abrahams, David C++ template metaprogramming concepts, tools, and techniques from boost and beyond aC++ (Computer program language) aComputer programming Template (DE-588)4265509-2 gnd Metaprogrammierung (DE-588)4199820-0 gnd C++ (DE-588)4193909-8 gnd |
subject_GND | (DE-588)4265509-2 (DE-588)4199820-0 (DE-588)4193909-8 |
title | C++ template metaprogramming concepts, tools, and techniques from boost and beyond |
title_auth | C++ template metaprogramming concepts, tools, and techniques from boost and beyond |
title_exact_search | C++ template metaprogramming concepts, tools, and techniques from boost and beyond |
title_full | C++ template metaprogramming concepts, tools, and techniques from boost and beyond David Abrahams, Aleksey Gurtovoy |
title_fullStr | C++ template metaprogramming concepts, tools, and techniques from boost and beyond David Abrahams, Aleksey Gurtovoy |
title_full_unstemmed | C++ template metaprogramming concepts, tools, and techniques from boost and beyond David Abrahams, Aleksey Gurtovoy |
title_short | C++ template metaprogramming |
title_sort | c template metaprogramming concepts tools and techniques from boost and beyond |
title_sub | concepts, tools, and techniques from boost and beyond |
topic | aC++ (Computer program language) aComputer programming Template (DE-588)4265509-2 gnd Metaprogrammierung (DE-588)4199820-0 gnd C++ (DE-588)4193909-8 gnd |
topic_facet | aC++ (Computer program language) aComputer programming Template Metaprogrammierung C++ |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017324294&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT abrahamsdavid ctemplatemetaprogrammingconceptstoolsandtechniquesfromboostandbeyond AT gurtovoyaleksey ctemplatemetaprogrammingconceptstoolsandtechniquesfromboostandbeyond |