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