首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++静态模板函数导致armcc编译错误(304)

C++静态模板函数导致armcc编译错误(304)
EN

Stack Overflow用户
提问于 2013-05-06 16:34:54
回答 1查看 491关注 0票数 5

我已经在VS10和armcc4.1build561上测试了以下代码的编译。函数depth1()和depth2()都在VS上编译,但是armcc将只编译depth1(),同时为depth2()给出错误304 (没有与参数列表匹配的实例)。当foo和bar是非静态的时,它在armcc上也能很好地编译。

我很乐意理解其中的原因。

代码语言:javascript
复制
template <class T>
static T foo(T arg)
{
   return arg*5;
}

template <class T>
static T bar(T arg)
{
   return foo<T>(arg);
}

void depth2()
{
   int i = 12;
   i = bar<int>(i);
}

void depth1()
{
   int i = 12;
   i = foo<int>(i);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-19 07:32:24

根据上面的评论:这似乎是armcc 4.1中的一个错误。

如果您的雇主与ARM签订了支持合同,您可以在此处向ARM提出支持问题:http://www.arm.com/support/obtaining-support/index.php (单击“开发工具”选项卡,然后单击蓝色的大按钮“提出支持案例”)。

至于变通方法,您可以尝试

  • 在源文件中重新排列foobar的定义;在其定义之前为foo和/或bar添加正向声明;和/或
  • 在其声明之后的某处添加foo<int>的显式实例化,如下所示:

模板int foo(int arg);//或者,如果您更喜欢这种风格,模板int foo(int arg);

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16394917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档