Допустим, в C ++ у меня есть функция со следующей подписью:
A<B> getTemplatedClassInstance();
где & В некоторые классы. Затем я пытаюсь сгенерировать привязки WebIDl для использования в сборке emscripten для использования кода C ++ из Javascript. У меня есть рабочий файл привязок с различными другими классами, перечислениями и т. Д., Которые могут быть связаны и доступны из JS, но я не знаю, как представлять шаблонные типы (класс A, в приведенном выше примере). Я пробовал различные комбинации объявлений привязки WebIDL, как:
interface A {};
interface A<> {};
interface A<B> {};
interface C {
A<B> getTemplatedClassInstance();
};
interface C {
A getTemplatedClassInstance();
};
Но любое использование угловых скобок<> ‘генерирует синтаксическую ошибку из сценария webidl_binder.py (входит в состав emscripten sdk), который использовался для его создания, и если я оставляю объявление и использую A как untempled, создается файл привязки, но окончательная компиляция emscripten (emcc. ..) из привязок с библиотекой C ++ происходит сбой в файле cpp привязок с:
ошибка: использование шаблона класса требует шаблона
аргументы
что имеет смысл. Как ни странно, в документации WebIDL вообще не упоминаются типы шаблонов. Я почесал в Интернете и нашел одна ссылка для привязки конкретных экземпляров шаблона с помощью «Embind», но ничего не касается WebIDL.
Задача ещё не решена.
Других решений пока нет …