auto
টেমপ্লেট হিসাবে টাইপ ছাড়ের একই প্রক্রিয়া ব্যবহার করে, কেবলমাত্র ব্যতিক্রম যে আমি ব্রেস-আরআইএন তালিকাগুলি auto
হিসাবে সচেতন, সেগুলি দ্বারা কেটে নেওয়া হয় std::initializer_list
, তবে কোনও টেম্পলেট প্রসঙ্গে অ-ছাড় হয়।
auto x = expression;
প্রথমে সমস্ত রেফারেন্স এবং সিভি কোয়ালিফায়ারকে ডান হাতের অভিব্যক্তির প্রকারটি বাদ দিয়ে, তারপরে টাইপের সাথে মিলে কাজ করে। উদাহরণস্বরূপ, যদি আপনার const int& f(){...}
এরপরে auto x = f();
ছাড় x
হয় int
, এবং না const int&
।
অন্য ফর্ম,
auto& x = expression
সিভি-কোয়ালিফায়ারগুলিকে স্ট্রিপ করে না , সুতরাং উপরের উদাহরণটি ব্যবহার করে, হিসাবে auto& x = f()
ছাড় দেয় । অন্যান্য সংমিশ্রণগুলি কেবল সিভি কোয়ালিফায়ার যুক্ত করে।x
const int&
আপনি যদি চান যে আপনার ধরণটি সর্বদা সিভি-রেফের বাছাইপরায়ণ হিসাবে কাটাতে decltype(auto)
হয় তবে সি ++ 14-তে কুখ্যাত ব্যবহার করুন , যা decltype
টাইপ ছাড়ের নিয়ম ব্যবহার করে ।
সুতরাং, সংক্ষেপে, যদি আপনি অনুলিপি চান, ব্যবহার করুন auto
, আপনি যদি উল্লেখ চান, ব্যবহার করুন auto&
। const
আপনি যখনই অতিরিক্ত-বোধ করতে চান তখন ব্যবহার করুন const
।
সম্পাদনা করুন
অতিরিক্ত ব্যবহারের কেস রয়েছে,
auto&& x = expression;
যা টেম্পলেট কোডে রেফারেন্স রেফারেন্সের ক্ষেত্রে যেমন রেফারেন্স-ভেঙে দেওয়া নিয়ম ব্যবহার করে। যদি expression
লভ্যালু হয়, তবে x
এর সিভি-বাছাইকারীদের সাথে একটি লভ্যালু রেফারেন্স expression
। যদি expression
কোনও মূল্যবোধ হয়, তবে x
এটি একটি মূল্যসূত্র উল্লেখ।
auto
কাজ করে (initializer_list
এস এর অদ্ভুত ক্ষেত্রে বাদে যা কোনও টেম্পলেট প্রসঙ্গে অ-অনুদান ছাড়াই), তারপরেauto
ছাড়ের টাইপ করুন।