公开具有推导类型的 class 成员函数
Exposing class member functions with deduced types
我正在尝试编写一个接口 class,用户可以在其中以 DLL 的形式提供他们的实现。作为此接口的一部分,有一些成员函数 return 是在运行时确定的推导类型,例如:
auto someFunction(int x) -> decltype(auto)
我无法公开这些函数以供客户端应用程序使用。我试图对这个问题做一些研究,似乎最流行的导出成员函数的解决方案是将它们声明为虚拟的以使用 vtable。我试过这个方法但得到了一个错误“虚函数不能有推导的return类型”。 vtable 方法是否有任何替代方法?
谢谢。
您尝试执行的操作是不可能的。虚函数不能是模板(在这种情况下,您可以将 auto 视为模板)。这样做的原因是所有类型推导都发生在编译时,因为在 C++ 中 运行 时间没有类型信息。虚函数解析发生在编译时。您正在寻找的技术(不是灵丹妙药,但有时适用)称为类型省略。
我正在尝试编写一个接口 class,用户可以在其中以 DLL 的形式提供他们的实现。作为此接口的一部分,有一些成员函数 return 是在运行时确定的推导类型,例如:
auto someFunction(int x) -> decltype(auto)
我无法公开这些函数以供客户端应用程序使用。我试图对这个问题做一些研究,似乎最流行的导出成员函数的解决方案是将它们声明为虚拟的以使用 vtable。我试过这个方法但得到了一个错误“虚函数不能有推导的return类型”。 vtable 方法是否有任何替代方法?
谢谢。
您尝试执行的操作是不可能的。虚函数不能是模板(在这种情况下,您可以将 auto 视为模板)。这样做的原因是所有类型推导都发生在编译时,因为在 C++ 中 运行 时间没有类型信息。虚函数解析发生在编译时。您正在寻找的技术(不是灵丹妙药,但有时适用)称为类型省略。