c++ template examples from basics to meta template programming