变量模板的intel编译器buggy备注?

时间:2014-10-30 08:53:56

标签: c++ intel compiler-warnings variadic-templates icc

我使用intel编译器,因为intel不支持-Wall我使用-Wremarks作警告...

我有这个简单的代码,它只是一个特定的对象..

    template<typename... Args_t>
    static inline Obj makeObj(Args_t&&... args) {
        auto obj = std::make_shared<Obj>(args...); // probably can forward but doesn't matter..
        return obj;
    }

我得到了这句话:

remark #869: parameter "args" was never referenced
这是一个错误吗?谁看过这个?

2 个答案:

答案 0 :(得分:1)

这只是一个错误警告that was already reported in the Intel forum。它没有任何特殊含义,因为代码完全没问题(尽管你应该考虑完美转发)。

答案 1 :(得分:0)

如果您使用的是英特尔编译器版本15,我发现了以下解决方法。也许它对你有用

template<typename... Args_t>
static inline Obj makeObj(Args_t&&... args) {
    [&args...]{}(); // WORKAROUND 
    // ... your other code
    return obj;
}

只有lambda才能解决这个问题。显然lamdba包的实际使用参数包。但扩大包装否则将无法使用&#34;包装方式相同。