Download Advanced Metaprogramming in Classic C++ (3rd Edition) by Davide Di Gennaro PDF

By Davide Di Gennaro

Complex Metaprogramming in vintage C++ bargains a close check out C++ template metaprogramming (TMP); TMP is gifted within the ebook as a collection of thoughts that may convey a brand new variety in C++ and making it exceedingly transparent and effective. The e-book offers with language points, layout styles, examples and purposes (seen as case studies). certain emphasis is wear small reusable options that would enhance the standard of day-by-day work.

The e-book teaches metaprogramming utilizing vintage C++, that's, no longer utilizing the 2 more moderen criteria. this is often performed to maximise compatibility and obviously illustrate the method, allowing the reader to realize tricky fabric with no the burdens of compiler mistakes, and different pointless complexities and allowing a way more excessive therapy of the topic. In so doing, all next additions to the C++ language are absolutely appropriate with the code during this e-book and clients acquainted with them can leverage the techniiques brought in C++ XX to make the styles during this e-book much more robust. there's a bankruptcy notwithstanding that discusses matters concerning the more recent standards.

What makes the e-book extraordinary is the extent of realizing of the recommendations concerned imparted by means of the writer. this isn't only a rote evaluate of metaprogramming. you'll actually comprehend tricky themes like static assertions, the way to write metafunctions, overload solution, lambda expressions, and so forth. greater than that, you'll paintings via them with sensible examples guided via the author's frank causes. This e-book calls for you to imagine and to benefit and to appreciate the language that you can application at the next level.

What you’ll learn

What templates and the small item toolkit are, and the way to take advantage of them
the way to do overload resolution
easy methods to do metaprogramming with interfaces, algorithms, functors and refactoring
tips to paintings with code generators
what's opaque style precept and the way to exploit it
the way to paintings with debugging templates and more
A bankruptcy dedicated to matters surrounding C++0x and C++14

Who this publication is for

This e-book is for skilled C++ programmers who are looking to examine more.
Table of Contents

Part I

1. Templates

2. Small item Toolkit

Part II

3. Static Programming

4. Overload Resolution

5. Interfaces

6. Algorithms

7. Code Generators

8. Functors

9. Opaque kind Principle

Part III

10. Refactoring

11. Debugging Templates

12. C++0X

13. Appendix A: Exercises

14. Appendix B: Bibliography

Show description

Read or Download Advanced Metaprogramming in Classic C++ (3rd Edition) PDF

Similar programming books

Practical Ruby Gems

Sensible Ruby gem stones is a accomplished advisor to using and developing Ruby Gems—ready-made Ruby code modules that may be simply further to Ruby and Rails tasks. This booklet is perfect for Ruby programmers in addition to internet builders who use Rails and need to increase the performance in their tasks.

Flask Blueprints

Flask is a small yet strong internet improvement framework for Python. notwithstanding Flask is called a micro-framework, it truly is no method missing in performance; there are numerous extensions to be had to Flask which is helping it to operate on the similar point as different huge frameworks akin to Django and Ruby on Rails.

This booklet will show how one can improve a sequence of internet program initiatives with the Python internet micro-framework, and leverage extensions and exterior Python libraries and APIs to increase the advance of quite a few greater and extra advanced net applications.

The ebook will commence by means of explaining Python’s Virtualenv library and the way to create and turn among a number of digital environments. You’ll first construct an SQL database-backed software, on the way to use Flask-WTF, Flask-SQLAlchemy, Jinja templates, and different equipment. subsequent you’ll flow directly to a timeline program, equipped utilizing innovations together with pytest-Flask, the Blinker package deal, information modelling for consumer timelines, exception dealing with, and growing and organizing CLI instruments.

Kinect Hacks: Tips & Tools for Motion and Pattern Detection

Create your individual cutting edge functions in laptop imaginative and prescient, online game layout, song, robotics, and different parts by means of taking complete benefit of Kinect’s broad interactive, multi-media platform. With this publication, you get a step by step walkthrough of the simplest suggestions and instruments to come back out of the OpenKinect undertaking, the biggest and such a lot energetic Kinect hacking group.

Extra info for Advanced Metaprogramming in Classic C++ (3rd Edition)

Example text

Symbols Most C++ projects contain several kinds of symbols (classes, functions, constants, and so on). A rough division line can be drawn between system/framework utilities, which are completely abstract and generic, and project specific entities, which contain specific logic and are not expected to be reused elsewhere. This simple classification may turn out important for (human) debuggers. If any piece of code is considered a “system utility,” then it’s implicitly trusted and it may usually be “stepped over” during debug.

Template struct C { C(C) { } }; template <> struct C { }; The correct version uses a forward declaration: template struct C; template <> struct C { }; template struct C { C(C) { } }; 31 Chapter 1 ■ Templates Note that you can partially specialize (and you’ll do it often) using integer template parameters: // general template template class MyClass { ... }; // partial specialization (1) for any T with N=0 template class MyClass { ...

The main reason was that compilers were unable to deal with static const integers (including bool). The advantage of using an enum over a static constant is that the compiler will never reserve storage space for the constant, as the computation is either static or it fails. Conversely, a static constant integer could be “misused” as a normal integer, for example, taking its address (an operation that the compiler will disallow on enums). cpp file, as any other static data member of a class). However, most compilers allow it, as long as the code does not try to take the address of the constant or bind it to a const reference.

Download PDF sample

Rated 4.76 of 5 – based on 14 votes