ভেরিয়েবলের জন্য, নির্দিষ্ট করে যে ভেরিয়েবলের ধরণটি ঘোষণা করা হচ্ছে তা এর আরম্ভকারী থেকে স্বয়ংক্রিয়ভাবে বাদ দেওয়া হবে। ফাংশনগুলির জন্য, উল্লেখ করে যে রিটার্নের ধরণটি একটি পিছনের রিটার্নের ধরণ বা তার রিটার্নের স্টেটমেন্ট (সি ++ 14 থেকে) থেকে কেটে নেওয়া হবে।
বাক্য গঠন
auto variable initializer (1) (since C++11)
auto function -> return type (2) (since C++11)
auto function (3) (since C++14)
decltype(auto) variable initializer (4) (since C++14)
decltype(auto) function (5) (since C++14)
auto :: (6) (concepts TS)
cv(optional) auto ref(optional) parameter (7) (since C++14)
ব্যাখ্যা
1) ব্লক স্কোপে, নেমস্পেসের সুযোগে, লুপের প্রারম্ভিককরণের বিবৃতিতে, ইত্যাদির ক্ষেত্রে ভেরিয়েবলগুলি ঘোষণার সময়, কীওয়ার্ড অটো টাইপ স্পেসিফায়ার হিসাবে ব্যবহৃত হতে পারে। একবার প্রারম্ভিকের ধরণ নির্ধারণ করা হয়ে গেলে, সংকলক প্রকার কল থেকে টেমপ্লেট আর্গুমেন্ট ছাড়ের নিয়ম ব্যবহার করে কীওয়ার্ড অটো প্রতিস্থাপন করবে এমন প্রকারটি নির্ধারণ করে (বিশদ বিবরণের জন্য টেমপ্লেট আর্গুমেন্ট কর্তন # অন্যান্য বিষয় দেখুন)। মূলশব্দ অটোতে সংশোধক বা & র মতো সংশোধকগুলিও থাকতে পারে যা টাইপ ছাড়ের ক্ষেত্রে অংশ নেবে। উদাহরণস্বরূপ, প্রদত্ত const auto& i = expr;
, i টাইপটি হ'ল যুক্তিটির ধরণটি হ'ল এক কাল্পনিক টেমপ্লেটে template<class U> void f(const U& u)
যদি ফাংশন কল হয়f(expr)
সংকলিত ছিল অতএব, অটো এবং অ্যান্ডশিয়ালটি লুভের জন্য পরিসীমা ভিত্তিক ব্যবহৃত হয়, প্রারম্ভকালীন অনুসারে লভালিউ রেফারেন্স বা মূল মূল্য হিসাবে উল্লেখ করা যেতে পারে। যদি একাধিক ভেরিয়েবল ঘোষণার জন্য অটো ব্যবহার করা হয় তবে ছাড়ের ধরণগুলি অবশ্যই মেলাতে পারে। উদাহরণস্বরূপ, ঘোষণাটি auto i = 0, d = 0.0;
দুর্গঠিত, যখন ঘোষণাপত্রটি auto i = 0, *p = &i;
সুগঠিত হয় এবং স্বয়ংক্রিয়িকে ইনট হিসাবে বিয়োগ করা হয়।
২) একটি ফাংশন ঘোষণায় যা ট্রেলিং রিটার্ন টাইপ সিনট্যাক্স ব্যবহার করে, কীওয়ার্ড অটো স্বয়ংক্রিয় টাইপ সনাক্তকরণ সম্পাদন করে না। এটি কেবল সিনট্যাক্সের অংশ হিসাবে কাজ করে।
3) একটি ফাংশন ঘোষণায় যা পিছনে রিটার্ন টাইপ সিনট্যাক্স ব্যবহার করে না, কীওয়ার্ড অটো ইঙ্গিত দেয় যে রিটার্নের ধরণটি তার রিটার্ন স্টেটমেন্টের অপারেন্ড থেকে টেমপ্লেট আর্গুমেন্ট ছাড়ের নিয়ম ব্যবহার করে বাদ দেওয়া হবে।
৪) যদি ভেরিয়েবলের ঘোষিত প্রকারটি ডিক্লাইপ (অটো) হয় তবে কীওয়ার্ড অটোটি তার আরম্ভকারীটির এক্সপ্রেশন (বা এক্সপ্রেশন তালিকা) দিয়ে প্রতিস্থাপিত হবে এবং ডিক্লাইপ জন্য নিয়ম ব্যবহার করে প্রকৃত প্রকারটি বাদ দেওয়া হবে।
5) যদি ফাংশনটির রিটার্ন ধরণের ডিক্লাইপ (অটো) হিসাবে ঘোষিত হয়, কীওয়ার্ড অটো তার রিটার্ন স্টেটমেন্টের অপারেন্ডের সাথে প্রতিস্থাপিত হবে এবং ডিক্লাইপ জন্য নিয়ম ব্যবহার করে আসল রিটার্ন টাইপ অনুমিত হয়।
)) ফর্ম অটো :: এর নেস্টেড-নাম-স্পেসিফায়ার হল এমন একটি স্থানধারক যা প্রতিবন্ধী স্থানধারক ছাড়ের নিয়ম অনুসরণ করে শ্রেণি বা গণনা টাইপের দ্বারা প্রতিস্থাপিত হয়।
7) ল্যাম্বডা এক্সপ্রেশনটিতে একটি প্যারামিটার ঘোষণা। (যেহেতু সি ++ 14) একটি ফাংশন প্যারামিটার ঘোষণা। (ধারণা টিএস)
নোট
সি ++ 11 অবধি অটোতে স্টোরেজ সময়কালের নির্দিষ্টকরণকারকের অর্থ রয়েছে। এক ঘোষণায় স্বয়ংক্রিয় ভেরিয়েবল এবং ফাংশনগুলি মিশ্রিত করার auto f() -> int, i = 0;
অনুমতি নেই।
আরও তথ্যের জন্য: http://en.cppreferences.com/w/cpp/language/auto