【问题标题】:Fully specialised templates and dllexport完全专业化的模板和 dllexport
【发布时间】:2023-03-28 18:06:02
【问题描述】:

Microsoft 说:“模板不能与使用 __declspec (dllimport) 或 __declspec (dllexport) 声明的函数一起使用。” (link)。

这是什么意思?我可以将具有完全专用模板类引用的函数导出为参数吗?

【问题讨论】:

    标签: c++ windows dll templates


    【解决方案1】:

    这不是dllexport/dllimport 特有的问题,它是模板的普遍问题——目前只有一个编译器实现了export 模板的方法,有关详细信息,请参阅Comeaus template FAQ

    然而,完全专业化的模板是独特而具体的类型,基本上可以与__declspec 扩展一起使用,但除了您链接的条目之外还有limitations

    就我个人而言,我主要避免在界面中使用模板,只在内部使用它们——我看不出花时间解决这些限制会给你带来多大的好处。

    【讨论】:

      【解决方案2】:

      这意味着你不能 dllexport 一个 函数模板 采用 std::basic_string<T>&,但你当然可以 dllexport 一个 函数 采用 @987654325 @。

      另见http://msdn.microsoft.com/en-us/library/twa2aw10(VS.80).aspx

      【讨论】:

      • 很好的例子。 std::string 很少被视为完全专用的模板。
      猜你喜欢
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      相关资源
      最近更新 更多