【发布时间】:2014-07-23 14:02:29
【问题描述】:
在我使用的一个库中,我看到了这段代码:
template<typename T>
void f(SomeTemplatedClass<T> input)
{
(void)input;
...
use(input); // code that uses input
}
我不知道这段代码是什么意思。如果我将演员表移除为无效,我会得到一个
statement has no effect
gcc 中的警告。所以我想有人故意这样做,故意添加演员来摆脱警告。
你有没有遇到过无效的声明,但出于某种原因需要它?
编辑:
假设这与模板无关是否安全?例如规避旧的编译器错误等?
【问题讨论】:
-
这是一种诱使编译器不对未使用的变量发出警告的方法。
-
while (doSomething()) {} -
顺便说一句,防止警告的另一种方法就是不命名参数。当您的
assert可能处于活动状态或未处于活动状态时,现有方法非常有用。 -
哦,这个变量是用在别处的吗?那么我想不出有什么理由要保留这种说法。
-
除了不给参数命名的注释外,还可以在声明中命名但在定义中不命名。名称(或缺少名称)不需要匹配。