struct UndoableCommand { };
template <
template <typename P1, typename P2> class CommandType,
typename P1a, typename P2a>
void createCommand(P1a p1, P2a p2)
{
UndoableCommand* cmdPtr = new CommandType<P1a,P2a>(p1, p2);
}
template <typename P1, typename P2> class MyCommand : public UndoableCommand
{
public:
MyCommand(P1, P2) { }
};
int main()
{
createCommand<MyCommand>(1, 2.0);
}
CnN0cnVjdCBVbmRvYWJsZUNvbW1hbmQgeyB9OwoKdGVtcGxhdGUgPAogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4gY2xhc3MgQ29tbWFuZFR5cGUsCiAgICB0eXBlbmFtZSBQMWEsIHR5cGVuYW1lIFAyYT4Kdm9pZCBjcmVhdGVDb21tYW5kKFAxYSBwMSwgUDJhIHAyKQp7CiAgICBVbmRvYWJsZUNvbW1hbmQqIGNtZFB0ciA9IG5ldyBDb21tYW5kVHlwZTxQMWEsUDJhPihwMSwgcDIpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyPiBjbGFzcyBNeUNvbW1hbmQgOiBwdWJsaWMgVW5kb2FibGVDb21tYW5kCnsKcHVibGljOgogICAgTXlDb21tYW5kKFAxLCBQMikgeyB9Cn07CgppbnQgbWFpbigpCnsKICAgY3JlYXRlQ29tbWFuZDxNeUNvbW1hbmQ+KDEsIDIuMCk7Cn0K