Core C++ concepts with Template