คำตอบสั้น
ไม่มีออเปอเรเตอร์นี้ใน C++ เป็นการผสมผสานของหลายออเปอเรเตอร์
บริบท: Wrapper Types
บางครั้งมี nested wrapper types (unique_ptr, shared_ptr, optional) ต้องเรียก .get() หลายครั้ง หรือ dereference หลายครั้ง
wrapper<wrapper<std::string>> wp; wp.get().get().length(); wp.get()->length();
Long Arrow Operator
C++98 introduce "long arrow" เพื่อลด .get()
wrapper<wrapper<std::string>> wp; wp--->length(); // long arrow
เพิ่ม layer → เพิ่ม dash: wp----->length()
กลไกจริง
Long arrow ไม่ใช่ single operator แต่ combination:
wp--->length()→ compiler เห็น((wp--)--)->length()- Postfix
--+->
Implementation
template <typename T>
class wrapper {
public:
T* operator->() { return &t; }
T& operator--(int) { return t; } // postfix -- คืน object
private:
T t;
};
Postfix -- คืน reference ให้ -> ใช้งานต่อได้