تمدید موقت عمر: اشتباهات و راه حل ها

تمدید موقت عمر چیست؟

تمدید طول عمر موقت (TLE) یک ویژگی زبان C++ است که به شما امکان می‌دهد طول عمر یک موقت را در صورتی که به lvalue ثابت، rvalue ثابت یا مرجع rvalue قابل تغییر محدود باشد، افزایش دهید. به طور خاص، این ویژگی کد زیر را درست می کند:

#include 

using T = std::pair;

T func(int x) { return T{x, x}; }

int main() {
   const T& cv = func(7);
   T&& rv = func(5);
   const T&& crv = func(3);
   return cv.first + rv.first + crv.first;
}

در این کد با هر کدام func تماس بگیرید، یک نمونه موقت جدید از نوع ایجاد می کنیم T، که ما به نوعی مرجع متصل می کنیم. این ویژگی تضمین می‌کند که به دلیل این اتصال، موقت‌های ایجاد شده در پایان عبارت ایجاد شده از بین نخواهند رفت، اما طول عمر آنها نیز برای مطابقت با طول عمر مرجع محدود افزایش می‌یابد.

به عبارت دیگر، به دلیل این الزام آور، زمانی که مرجع محدود از محدوده خارج شود، موقت از بین می رود. به طور موثر، TLE زمانی که موقعیت الزامات ویژگی را برآورده می کند، معنایی را برای مرجع پیاده سازی می کند.

توجه داشته باشید که از نظر تمدید طول عمر موقت، همه انواع مرجع ارائه شده در اینجا به یک شکل عمل می کنند. بنابراین در ادامه متن فقط الف را در نظر خواهیم گرفت const T& مورد.

چرا ما نیاز داریم …

Source link