Eclipse CDT - 使用模板默认值时出现“无效参数”

Posted

技术标签:

【中文标题】Eclipse CDT - 使用模板默认值时出现“无效参数”【英文标题】:Eclipse CDT - "Invalid arguments" when using template defaults 【发布时间】:2017-03-03 19:10:00 【问题描述】:

我收到以下代码的奇怪错误:

template<class T, size_t Size = sizeof(T)>
class foobar 
;

template<class T>
void foo(foobar<T> param1) 
    // Do something


void bar() 
    foobar<int> obj;

    foo(obj);

错误发生在foo(obj);行,是:

Invalid arguments '
Candidates are:
void foo(foobar<#0,unsigned int16 0 #0>)
'

不过,代码本身编译得很好。我不知道如何解决它。

Eclipse giving me Invalid arguments ' Candidates are: void * memset(void *, int, ?) ' though I know the args are good 没有修复它,所以这个问题不是重复的。

【问题讨论】:

已经试过template&lt;class T, size_t Size = sizeof(T)&gt;了吗? 我猜这里:项目设置 -> C/C++ 常规 -> 代码分析 但我没有使用 eclipse 所以我不确定 是的。这是可重复的。可能值得报告错误。 CDT 的 C++ 代码库目前正在积极开展工作,我建议您将可重现的测试用例提交给bugs.eclipse.org/bugs/enter_bug.cgi?product=CDT @JonahGraham 我会报告的。 【参考方案1】:

这是 CDT 中的一个错误。已提交 bug report 来跟踪它,并发布了修复它的 patch。

更新:该错误现在是fixed。修复将出现在 Eclipse Oxygen 中。

【讨论】:

以上是关于Eclipse CDT - 使用模板默认值时出现“无效参数”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse Juno/Kepler/Luna CDT 中启用 C++11?

如何从现有的 C++ 源代码在 Eclipse CDT 中创建 GNU Autotool 项目?

默认构建设置 Eclipse CDT

在 c++ Eclipse CDT 中使用不同的值构建

Eclipse 工作区? Eclipse 启动时出现问题

使用反射创建的模板值时出现意外的故障地址