【问题标题】:Explicit template instantiation through a typedef通过 typedef 显式模板实例化
【发布时间】:2012-07-29 07:30:52
【问题描述】:

如果我有

typedef Foo<float> Foof;

为什么我不能像这样显式实例化模板

template class Foof;

除了输入Foo&lt;float&gt;之外还有其他解决方法吗?

【问题讨论】:

  • @Kay:我想为float 显式实例化Foof 模板类,这样我就不会出现链接错误(并且不包括模板定义)
  • 感谢 -1 没有解释原因:)
  • 实例化不是您在定义的第二个代码中编写的内容¿????你想做什么?
  • @Gabriel:这不是一个定义,请阅读:stackoverflow.com/a/3534789/368599
  • @Samaursa 谢谢!没想到这么多!实际上,当我使用 CUDA 时,我也必须显式实例化函数模板(C++ 中的 cuda 内核包装器),

标签: c++ templates


【解决方案1】:

除了键入 Foo 之外还有其他解决方法吗?

不,很遗憾没有。您必须输入Foo&lt;float&gt;。至于为什么,请参阅规则的 C++ 标准的 14.7.2 第 3 条(虽然我不知道规则背后的基本原理)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多