我想问一下, 正确且整洁的方式 来声明一个函数,其回归类型取决于条件。
这就是我在如此糟糕的情况下解决这个问题的方法(没有创建功能):
const QAudioFormat::SampleType signalSampleType;
typedef decltype(signalSampleType == QAudioFormat::Float ? float() : (signalSampleType == QAudioFormat::SignedInt ? int() : unsigned int())) sampleType;
std::vector<sampleType> rawSignalData;
这样会好吗,还是有更好的方法来做这些事情?
答案 0 :(得分:3)
using sampleType = typename std::conditional<
signalSampleType == QAudioFormat::Float,
float,
typename std::conditional<
signalSampleType == QAudioFormat::SignedInt,
int, unsigned int>::type
>::type;
使用c ++ 14可以减少丑陋:
using sampleType = std::conditional_t<
signalSampleType == QAudioFormat::Float,
float,
std::conditional_t<
signalSampleType == QAudioFormat::SignedInt,
int, unsigned int>
>