我使用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
这是一个错误吗?谁看过这个?
答案 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;包装方式相同。