[Solved] How to check if getTimeSignature() returns a valid TimeSignature

I would expect juce::nullopt to work, but the two operands don’t match.

auto timsigFromHost = *getPlayHead()->getPosition()->getTimeSignature();
if (timsigFromHost != juce::nullopt)
{
                      ... etc ....
}

and this also does not work, because the TimeSignature type cannot be converted to a bool:

if (auto timsigFromHost = *getPlayHead()->getPosition()->getTimeSignature())
{
                      ... etc ....
}

Here is how it’s done:

    juce::Optional<juce::AudioPlayHead::TimeSignature> timsigFromHost = 
                                 *getPlayHead()->getPosition()->getTimeSignature();
    if (timsigFromHost.hasValue())
    {
        foo1 = timsigFromHost->numerator;
        foo2 = timsigFromHost->denominator;
    }

Does it work if you get rid of the * ?

auto timsigFromHost = getPlayHead()->getPosition()->getTimeSignature(); ...

yes! that works too, and even with

if (timsigFromHost != juce::nullopt)

:+1:

1 Like