Является ли нижеприведенный код корректным кодом C++ и не содержит ли UB?
struct MyObject {
int a;
int b;
};
class MyObjectBuilder {
int m_a = 0;
int m_b = 0;
public:
MyObjectBuilder &a(int value) {
m_a = value;
return *this;
}
MyObjectBuilder &b(int value) {
m_b = value;
return *this;
}
MyObject build() {
return MyObject { m_a, m_b };
}
};
MyObject f() {
return MyObjectBuilder().a(10).b(20).build();
}
(меня напрягает возврат ссылки на this из метода объекта, когда сам объект является временным)