template ... void swap (...) { } template ... ... reverse ( ... ) { while ( begin != end ) { ... swap (... ) ... } }