How to do "modern" template metaprogramming using C++11 constructs. Article here.