This chapter introduces a number of new and advanced language features in C++. These features underlie much of template metaprogramming that is making its way into the standard (Abrahams and Gurtovoy, 2005). We give a detailed analysis of these features in this chapter and continue on the same theme in Chapter 6.
The goals of this chapter are:
This chapter can be skipped on a first reading. It can be used mainly as reference for a specific syntax. As with Chapter 6, the topics in this chapter are probably more useful to library builders than to application programmers.
Central to metaprogramming is the concept of a metafunction. In general terms, a metafunction is the compile-time analogue of a run-time function. Traditional functions accept values/objects as parameters and return values or objects. However, metafunctions accept types and compile-time constants as parameters and return types and constants. Metafunctions can be used to implement the following functionality:
A metafunction is a template. In general, metafunction implementation is usually based on template specialisation. We ...