operator-> повторяется до тех пор, пока не вернет значение не-классового типа

В соответствии с13.3.1.2/8, или лучшеСноска-129 (выделение мое):

[...] Процесс повторяется до тех пор, пока оператор-> функциявозвращает значение не классового типа.

Я думал, что я знал, какoperator-> работает (позвольте мне сказать, егорекурсивный путь, основанный на типе возврата), но я вижу, что я совершенно не знаю, как этона самом деле работает (я имею в виду, еготип возврата).

Когда я нашел это, я подумал, можно ли действительно определить и использовать что-то вродеdouble operator->() для общей структурыSЯ никогда не использовал такой оператор таким образом.
В качестве примера рассмотрим код ниже:

struct S { 
    constexpr double operator->() noexcept {
        return 3.14;
    }
};

int main() {
    static_assert(3.14 == S{}.operator->(), "!");
}

Синтаксис довольно уродливый, и я не вижу никакого использования такого оператора или подобного.

Какова реальная цель позволить программистам вернутьdouble илиfloat от этого оператора?
Что может быть для них возможным?

Ответы на вопрос(2)

Ваш ответ на вопрос