Nếu tôi viết f(x)->g(args, ...)
tôi có thể dựa vào một điểm chuỗi sau f(x)
trước khi đánh giá args, ...
không? Tôi có thể thấy các đối số theo cả hai cách:Có một điểm chuỗi giữa một cuộc gọi hàm trả về một đối tượng và một cuộc gọi phương thức trên đối tượng đó không?
- §1.9.17 "Khi gọi một hàm (có hoặc không có hàm), có một điểm chuỗi sau khi đánh giá tất cả đối số hàm (nếu có) Ngoài ra còn có một điểm chuỗi sau khi sao chép một giá trị trả về và trước khi thực hiện bất kỳ biểu thức nào bên ngoài hàm. "
- Mặt khác, đối tượng con trỏ hoàn toàn là một đối số ẩn
this
như thể tôi đã viếtg(f(x), args, ...)
cho thấy nó giống như một đối số, và do đó không xác định.
Nhà điều hành ->
không phải là một nhà điều hành nhị phân bình thường, vì rõ ràng g(...)
không có thể được đánh giá trước f(x)
như nó có thể nếu tôi đã viết f(x) + g(...)
. Tôi ngạc nhiên vì tôi không thể tìm thấy một số tuyên bố cụ thể về nó.
'->' là toán tử nhị phân? Nó trông giống như một toán tử đơn nhất trả về một con trỏ tới một kiểu nào đó, nếu bạn bỏ qua nó trông như thế nào. – Yakk
@Yakk: Nó là một toán tử đơn nhất, nhưng những gì là * n-ary * (của các loại) là 'T :: g' có một ẩn' this' cùng với 'args'. Câu hỏi đặt ra là liệu biểu thức tạo ra ngầm 'này' được sắp xếp trước khi đánh giá phần còn lại của đối số cho hàm thành viên' g' –
Có vẻ như [nó không] (https://ideone.com/IxBuui). – jrok