公开具有推导类型

时间:2015-08-27 14:39:28

标签: c++ dll auto decltype

我正在尝试编写一个接口类,用户以DLL的形式提供它们的实现。作为此接口的一部分,有一些成员函数返回在运行时确定的推导类型,例如:

auto someFunction(int x) -> decltype(auto)

我无法公开客户端应用程序要使用的这些函数。我试图对这个问题做一些研究,似乎导出成员函数最流行的解决方案是声明它们是虚拟的,以利用vtable。我试过这个方法,但得到一个错误“虚拟函数不能有推导的返回类型”。 vtable方法还有其他选择吗?

感谢。

1 个答案:

答案 0 :(得分:0)

你想做的事是不可能的。虚函数不能是模板(在这种情况下,您可以将auto视为模板)。这样做的原因是所有类型推导都发生在编译时,因为在C ++中运行时没有类型信息。虚函数解析在编译时发生。您正在寻找的技术(不是银弹,但有时适用)称为类型省略。