COMMENT(The Template Concept)
includefile(functiontemplates/intro)

lsect(TEMPFUNDEF)(Defining function templates)
includefile(functiontemplates/definitions)

    subsect(Considerations regarding template parameters)
    includefile(functiontemplates/considerations)

    lsubsect(AUTODECL)(Auto and decltype)
    includefile(functiontemplates/autodecl)

        subsubsect(declval)
        includefile(functiontemplates/declval)

    subsect(Late-specified return type)
    includefile(functiontemplates/alternate)

lsect(REFWRAP)(Passing arguments by reference (reference wrappers))
includefile(functiontemplates/referencewrappers)

sect(Using local and unnamed types as template arguments)
includefile(functiontemplates/local)

lsect(TEMPFUNARGS)(Template parameter deduction)
includefile(functiontemplates/argumentdeduction)

    subsect(Lvalue transformations)
    includefile(functiontemplates/lvalue)

    subsect(Qualification transformations)
    includefile(functiontemplates/qualifications)

    subsect(Transformation to a base class)
    includefile(functiontemplates/baseclass)

    lsubsect(PARDEDUCT)(The template parameter deduction algorithm)
    includefile(functiontemplates/algorithm)

    lsubsect(CONTRACTIONS)(Template type contractions)
    includefile(functiontemplates/contractions)

lsect(TEMPFUNDECL)(Declaring function templates)
includefile(functiontemplates/declarations)

    lsubsect(TEMPFUNEXDEC)(Instantiation declarations)
    includefile(functiontemplates/instantdecl)

lsect(TEMPFUNINST)(Instantiating function templates)
includefile(functiontemplates/instantiations)

    subsect(Instantiations: no `code bloat')
    includefile(functiontemplates/nocodebloat)

lsect(TEMPFUNEXPLICIT)(Using explicit template types)
includefile(functiontemplates/explicit)

sect(Overloading function templates)
includefile(functiontemplates/overloading)

    subsect(An example using overloaded function templates)
    includefile(functiontemplates/example)

    subsect(Ambiguities when overloading function templates)
    includefile(functiontemplates/ambiguities)

    subsect(Declaring overloaded function templates)
    includefile(functiontemplates/declaring)

lsect(SPECIALIZING)(Specializing templates for deviating types)
includefile(functiontemplates/specialization)

    subsect(Avoiding too many specializations)
    includefile(functiontemplates/avoiding)

    subsect(Declaring specializations)
    includefile(functiontemplates/declaringspec)

    subsect(Complications when using the insertion operator)
    includefile(functiontemplates/insertion)

lsect(STATICASSERT)(Static assertions)
includefile(functiontemplates/staticassertions)

lsect(NUMLIM)(Numeric limits)
includefile(functiontemplates/limits)

sect(Polymorphous wrappers for function objects)
includefile(functiontemplates/polymorphouswrappers)

lsect(NAMERESFUN)(Compiling template definitions and instantiations)
includefile(functiontemplates/nameresolution)

lsect(FUNCTIONSELECTION)(The function selection mechanism)
includefile(functiontemplates/selection)

    subsect(Determining the template type parameters)
    includefile(functiontemplates/determining)

lsect(SFINAE)(SFINAE: Substitution Failure Is Not An Error)
includefile(functiontemplates/sfinae)

lsect(IFCONST)(Conditional function definitions using `if constexpr')
includefile(functiontemplates/ifconst)

sect(Summary of the template declaration syntax)
includefile(functiontemplates/summary)

sect(Variables as templates (template variables))
includefile(functiontemplates/variables.yo)
