c++ - 警告:返回带有两个参数构造函数的对象时,表达式结果未使用
问题描述
我有一个类表示用于 DSP 处理的复值样本缓冲区。对于一些看起来很干净的代码,这个类具有以下静态成员函数:
template <typename SampleType>
class SampleBufferComplex
{
public:
...
/** Helper to create one Sample of the buffers SampleType in templated code */
template <typename OriginalType>
static std::complex<SampleType> castToSampleType (OriginalType re, OriginalType im) {return (static_cast<SampleType> (re), static_cast<SampleType> (im)); }
}
这可以按预期工作,但是clang会抛出以下内容
Warning: "expression result unused".
...
Note:(67, 75) in instantiation of function template specialization 'SampleBufferComplex<float>::castToSampleType<double>' requested here
...
我看不到这里没有使用任何表达式结果,但是我想编写 100% 无警告代码。我是否面临一些奇怪的编译器错误,或者我在这里忽略了一些完全明显的东西?任何指针表示赞赏!
解决方案
在表达式中
return (static_cast<SampleType> (re), static_cast<SampleType> (im));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
突出显示的强制转换表达式的结果未使用。return 语句可以简化为(假设第一次转换没有副作用):
return static_cast<SampleType> (im);
但是,我怀疑这不是您想要的(您启用了警告是一件好事,嗯?)。也许你也打算使用真实的部分?在这种情况下,您可能应该改为:
return {static_cast<SampleType> (re), static_cast<SampleType> (im)};
推荐阅读
- windows - 如何将两个可执行文件打包成一个可执行文件,然后提取并运行它们?
- system-preferences - 为什么我的 Preference Pane 似乎认为它总是错误的架构?
- laravel - 上传 laravel 项目时,我在 cpanel 中遇到错误
- visual-c++ - 如何转换和连接 lpBuffer 中的位置以将十六进制数字打印为整数?
- typescript - TypeScript:从字符串数组定义联合类型
- airflow - Airflow 1.10 - 未知的任务运行器类型 StandardTaskRunner
- cobol - 在 COBOL 中取消字符串
- python - Django 1.11 - CreateView - 无效表单引发不存在对象属性的错误
- r - R&dplyr - 使用基于另一列的键的bin变量
- php - 我无法通过 webscraper 获取整个源代码 - SIMPLE HTML DOM