私はそのようなテンプレートクラスメソッドを持っています:
template<class T>
static tmpClass<T>* MakeInstance(T value)
{
tmpClass<T> *pointer = new tmpClass<T>(value);
return pointer;
}
そして、このメソッドを呼び出すためにさまざまな方法を使用しました。
方法 1:
MakeInstance<int>(val); // This is OK.
方法 2:
MakeInstance(int val); // ERROR: Expected '(' for function-style cast or type construction
方法 3:
MakeInstance(int (val)); // This is also OK.
方法 4:
MakeInstance(int, (val)); // The same issue with way 2
方法 5:
MakeInstance((int), (val)); // ERROR: Expect expression with ","
方法 6:
MakeInstance((int) val); // This is also OK.
方法 7:
MakeInstance<int val>; // ERROR: Expected ">"
では、方法 1、3、6 に違いはありますか? テンプレートに厳密に従わなければならないという理由だけで、「,」を使用して「T」と「値」を分割できないのはなぜですか? しかし、なぜ "<>" に "T" を含めることができるのでしょうか?