C ++ шаблоны на самом деле не существуют вне компилятора. Существуют шаблонов, но сами шаблоны являются просто конструкцией времени компиляции.
Нет функции с именем void addComponent<T>(IComponent*);
. - это функция, вызываемая void addComponent<int>(IComponent*)
или void addComponent<float>(IComponent*)
или для любого конкретного типа, который вы хотите. Но шаблоны не являются реальными функциями.
Вы можете связать экземпляр шаблона, который является конкретной функцией. Это работает так же, как привязка любой свободной функции в toLua. Имя экземпляра будет, addComponent<TypeName>
, где TypeName
- это имя конкретного типа, с которым вы хотите создать его экземпляр.
Другими словами, вы не можете связать концепцию addComponent
, которая определена для любого типа. Вы можете связать любой фактический addComponent
, определенный для определенного типа.