Универсальный инициализатор Си++11. В нём может быть что угодно: параметры конструктора, initializer_list, поля структуры… Ваш код эквивалентен коду
std::string helloWorld(std::move(hello().operator std::string()));
Вроде верно — раньше, НЯЗ, в helloWorld вызывался
op= КОНСТРУКТОР КОПИРОВАНИЯ, а сейчас С СИ++17 конструктор.
Для временных объектов вызывается версия string(string&&), я это обозначил как string(std::move()).
Ну и для преобразования hello в string используется hello::op string.
hello(), или, начиная с Си++11, hello{} — это создание временного объекта с помощью конструктора по умлочанию.