Hey, I am making a Board game framework in C++ (Basically you can create your own TicTacToe, or even chess) It will provide a simple minimax algorithm which will automatically work for any game. --- The core issue is number of Pieces on board. (TicTacToe has 2, Chess has 6). But these are essentially just identifiers. I am currently using templates which takes in an enum. template class Board; // Implementation of Board enum class TicTacToeTile { Empty, Cross, Dot }; class TicTacToeBoard : public Board { // Implementation }; Is there a better way of doing things? I considered classes but I feel you would need to instantiate classes in the heap and they are essentially only ids which will be too wasteful.