让我们在C ++中说我有一个带有以下签名的函数:
A<B> getTemplatedClassInstance();
其中A&amp; B是一些课程。然后我尝试生成WebIDl绑定以在emscripten构建中使用以使用来自Javascript的C ++代码。我有一个工作绑定文件,其中包含可以从JS绑定和访问的各种其他类,枚举等,但我对如何表示模板化类型(上例中的A类)感到茫然。我尝试了各种WebIDL绑定声明组合,如:
interface A {};
interface A<> {};
interface A<B> {};
interface C {
A<B> getTemplatedClassInstance();
};
interface C {
A getTemplatedClassInstance();
};
但是使用尖括号&#39;&lt;&gt;&#39;从用于构建它的webidl_binder.py脚本(包含在emscripten sdk中)生成语法错误,如果我将声明和A的使用保留为untemplated,则绑定文件构建,但最终的emscripten编译(emcc ... )绑定cpp文件中与C ++库的绑定失败:
错误:使用类模板需要模板 参数
这是有道理的。奇怪的是,WebIDL文档根本没有提到模板类型。我搜索了网页,发现single reference绑定特定模板实例与&#34; Embind&#34;,但没有关于WebIDL。