
includefile(advancedtemplates/intro)

lsect(SUBTLE)(Subtleties)
    includefile(advancedtemplates/subtle)

    lsubsect(RETURNNESTED)(Returning types nested under class templates)
    includefile(advancedtemplates/returnnested)

    lsubsect(TYPERES)(Type resolution for base class members)
    includefile(advancedtemplates/basenameresolution)

    lsubsect(DOTTEMP)(::template, .template and ->template)
    includefile(advancedtemplates/dottemplate)

sect(Template Meta Programming)

    subsect(Values according to templates)
    includefile(advancedtemplates/values)

        lsubsubsect(INTTYPE)(Converting integral types to types)
        includefile(advancedtemplates/int2type)

    lsubsect(ALTERNATIVES)(Selecting alternatives using templates)
    includefile(advancedtemplates/alternatives)

        subsubsect(Defining overloading members)
        includefile(advancedtemplates/overloaded)

        lsubsubsect(IFELSE)
            (Class structure as a function of template parameters)
        includefile(advancedtemplates/classstructure)

        subsubsect(An illustrative example)
        includefile(advancedtemplates/example)
        
    subsect(Templates: Iterations by Recursion)
    includefile(advancedtemplates/iterating)

lsect(UDL)(User-defined literals)
includefile(advancedtemplates/userdefined)

lsect(TEMPTEMPPAR)(Template template parameters)
includefile(advancedtemplates/templateparam)

    subsect(Policy classes - I)
    includefile(advancedtemplates/policies)

    subsect(Policy classes - II: template template parameters)
    includefile(advancedtemplates/templateparam2)

        subsubsect(The destructor of Policy classes)
        includefile(advancedtemplates/destructor)

    subsect(Structure by Policy)
    includefile(advancedtemplates/structure)

lsect(ALIASES)(Alias Templates)
includefile(advancedtemplates/aliases)

lsect(TRAIT)(Trait classes)
includefile(advancedtemplates/trait)

    lsubsect(CLASSORNOT)(Distinguishing class from non-class types)
    includefile(advancedtemplates/distinguish.yo)

    lsubsect(TYPETRAITS)(Available type traits)
    includefile(advancedtemplates/availabletraits)

    lsubsect(ERRCODEENUM)(Deriving classes from std::error_code)
    includefile(advancedtemplates/errorcode)

    subsect(Deriving classes from std::error_category) 
    includefile(advancedtemplates/errorcategory)

    lsubsect(ERRCONDITION)(Deriving classes from std::error_condition)
    includefile(advancedtemplates/errorcondition)

lsect(NOEXCEPT)(Using `noexcept' when offering the `strong guarantee')
includefile(advancedtemplates/noexcept)

sect(More conversions to class types)

    subsect(Types to types)
    includefile(advancedtemplates/typetype)

    lsubsect(NULLTYPE)(An empty type)
    includefile(advancedtemplates/nulltype)

    lsubsect(TYPECONV)(Type convertibility)
    includefile(advancedtemplates/conversion)

        subsubsect(Determining inheritance)
        includefile(advancedtemplates/inheritance)

lsect(TEMPLIST)(Template TypeList processing)
    includefile(advancedtemplates/listintro)

    subsect(The length of a TypeList)
    includefile(advancedtemplates/length)

    lsubsect(SEARCHTYPE)(Searching a TypeList)
    includefile(advancedtemplates/search)

    lsubsect(ATINDEX)(Selecting from a TypeList)
    includefile(advancedtemplates/select)

    subsect(Prefixing/Appending to a TypeList)
    includefile(advancedtemplates/append)

    subsect(Erasing from a TypeList)
    includefile(advancedtemplates/erase)

        subsubsect(Erasing the first occurrence)
        includefile(advancedtemplates/erasefirst)

        subsubsect(Erasing a type by its index)
        includefile(advancedtemplates/eraseindex)

        subsubsect(Erasing all occurrences of a type)
        includefile(advancedtemplates/eraseall)

        subsubsect(Erasing duplicates)
        includefile(advancedtemplates/erasedup)

sect(Using a TypeList)
includefile(advancedtemplates/using)

    subsect(The Wrap and Multi class templates)
    includefile(advancedtemplates/multi)

    subsect(The MultiBase class template)
    includefile(advancedtemplates/multibase)

    lsubsect(GENSUPPORT)(Support templates)
    includefile(advancedtemplates/support)

    subsect(Using Multi)
    includefile(advancedtemplates/usingmulti)

sect(Expression Templates)
includefile(advancedtemplates/expressiontemplates)

    subsect(Designing an Expression Template)
    includefile(advancedtemplates/designing)

    subsect(Implementing an Expression Template)
    includefile(advancedtemplates/implementing)

    subsect(The BasicType trait class and ordering classes)
    includefile(advancedtemplates/basictype)
