[article Template 1.5 [quickbook 1.5] ] [section Templates] [/-------------------------------- nullary arg ] [template foo0 nullary_arg] [foo0] [/-------------------------------- unary arg, phrase syle ] [template foo1[bar] foo [bar]] [foo1 baz] [/-------------------------------- unary arg, block syle ] [template foo2[bar] foo [bar] ] [foo2 baz] [template foo3[bar] This is a complete paragraph. [bar] [bar] [bar] [bar] [bar] [bar] [bar] [bar] [bar].... blah blah blah...... ] [foo3 kalamazoo] [/-------------------------------- unary arg, using punctuation ] [template ![bar] ''''''[bar]''''''] [!baz] [/-------------------------------- recursive templates ] [template foo4[bar] [foo3 [bar]] ] [foo3 madagascar] [template foo5[x] zoom [x]] [template foo6[x] [x] zoom] [foo6[foo5 peanut]] [template kinda_weird[x y] [x] [y]] [kinda_weird exactly..xanadu] [/-------------------------------- space delimitted args ] [template simple1[a b] [a][b]] [simple1 w x] [template simple2[a b c d] [a][b][c][d]] [simple2 w x y z][simple2 w x y z trail] [/-------------------------------- John's templates ] [template code[x] int main() { std::cout << ``[x]`` << std::endl; } ] [code "Hello\, World"] [template alpha '''α'''] [template pow[a b] [a]''''''[b]'''''' ] [template super[text]''''''[text]'''''' ] [pow x 2] [pow [alpha] 2] x[super 2] [/-------------------------------- Some more ] [template banana got a banana?] [template plantation[bananarama] [bananarama]] [plantation [banana]] [/-------------------------------- Not a bug (there was a syntax error here) ] [template join1[a b] [b][a]] [template join2[a b] [a][b]] [template test[x] [join1 [join2 0 [x]]...0]] [test 0] [/-------------------------------- Mismatched template ] [template foo 1] [fool] [template blah 10] [endsect] [section Empty Templates] [template empty1] [template empty2 ] [template empty3 [/comment]] [template empty4 [/comment] ] [template empty5 ] [template empty6 ] [template empty7 [/comment] ] [template empty8 [/comment] ] [template empty_arg1[x]] [template empty_arg2[x y]] [empty1] [empty2] [empty3] [empty4] [empty5] [empty6] [empty7] [empty8] [empty_arg1 1] [empty_arg2 1 2] [endsect] [/----------------------------------- Nested templates ] [section Nested Templates] [template block[content] Start block template. [content] End block template. ] [template phrase[content] Start phrase template. [content] End phrase template.] Pre [block [block Hello!]] Post Pre [block [phrase Hello!]] Post Pre [phrase [block Hello!]] Post Pre [phrase [phrase Hello!]] Post [endsect] [/----------------------------------- Block Markup ] [section Block Markup] [template list * a * b] [template horizontal ----] [template codeblock int main() {}] [template paragraphs Paragraphs 1 Paragraphs 2 ] [list][horizontal][codeblock][paragraphs] * [list] * [horizontal] * [codeblock] * [paragraphs] [endsect] [/----------------------------------- 1.5+ use static scoping ] [section Static Scoping] [template x static scoping] [template static_test1[] [x]] [template static_test2[x] [static_test1]] [static_test2 dynamic scoping] [/ This should be '[a]' because [a] isn't matched. ] [template test1[] [a]] [template test2[a] [test1]] [test2 1] [/ In 1.5 template arguments are scoped at the point they are defined] [template y new] [template static_test3[a y] [a]] [static_test3 [y] old] [/ From https://svn.boost.org/trac/boost/ticket/2034 ] [template same[x] [x]] [template echo[a b] [a] [b]] [template echo_twice[x] [echo [same [x]]..[same [x]]]] [echo_twice foo] [endsect] [/----------------------------------- 1.5+ template arguments ] [section Template Arguments] [template binary[x y] {[x]-[y]}] [binary 1..2] [/ {1-2} ] [binary 1 2] [/ {1-2} ] [binary 1..2 3 4] [/ {1-2 3 4} ] [binary 1 2..3 4] [/ {1 2-3 4} ] [binary 1 2 3..4] [/ {1 2 3-4} ] [binary 1.\.2..3] [/ {1..2-3} ] [binary 1.\.2 3] [/ {1..2-3} ] [binary [binary 1 2..3]..4] [/ { {1 2-3}-4} ] [binary [binary 1 2..3] 4] [/ { {1 2-3}-4} ] [binary [binary 1 2 3]..4] [/ { {1-2 3}-4} ] [binary \[1 2\] 3] [/ {[1-2] 3} ] [binary \[1..2\] 3] [/ {[1-2] 3} ] [binary \[1 2] [/ {(1-2} ] [template ternary[x y z] {[x]-[y]-[z]}] [ternary 1..2..3] [/ {1-2-3} ] [ternary 1 2 3] [/ {1-2-3} ] [endsect] [/----------------------------------- Block and phrases ] [section Block and phrase templates] [template phrase_template[] Some *text*] [template block_template[] A paragraph. ] [phrase_template] [block_template] [`phrase_template] [`block_template] [/ Trailing newline shouldn't be included] [template named_index[type title] ''''''[title]'''''' ] [named_index things Things] [endsect] [/----------------------------------- Escaped templates ] [section Escaped templates] [template raw_markup Not real boostbook] [template | Also not real boostbook] [template escaped1 [|] [`|]] [template escaped2 [x] [`x]] [`raw_markup] [`|] [escaped1 More fake boostbook] [escaped2 Final fake boostbook] [endsect]