用演绎的类型公开类成员函数

Exposing class member functions with deduced types

本文关键字:成员 函数 演绎 类型      更新时间:2023-10-16

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

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

我在向客户端应用程序公开这些函数时遇到了麻烦。我试图对这个问题做一些研究,似乎导出成员函数的最流行的解决方案是将它们声明为虚拟的,以利用虚函数表。我尝试了这个方法,但得到了一个错误"虚拟函数不能有一个推导的返回类型"。有什么方法可以替代虚表方法吗?

谢谢。

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