এই বাক্য গঠনটি সি ++ ধারণাগুলির প্রযুক্তিগত নির্দিষ্টকরণে বৈধ, তবে সি ++ 20 এ নয় in সি ++ ২০ টি ধারণায়, auto
কেবলমাত্র একটি ফাংশন প্যারামিটার ধরণের শীর্ষ স্তরে অনুমোদিত। সম্পর্কিত নিয়মটি হল [dcl.spec.auto] অনুচ্ছেদ 2 :
একটি স্থানধারক-টাইপ-সুনির্দিষ্টভাবে উল্লেখ করা ফর্মের টাইপ-বাধ্যতা [অপ্ট] auto
হিসেবে ব্যবহার করা যেতে পারে ডিক্লেয়ার-সুনির্দিষ্টভাবে উল্লেখ করা এর ডিক্লেয়ার-সুনির্দিষ্টভাবে উল্লেখ করা-SeQ একটি এর প্যারামিটার-ঘোষণা একটি ফাংশন ঘোষণা বা ল্যামডা প্রকাশ যদি না হয় তাহলে, এবং auto
টাইপ-স্পেসিফায়ার একটি ট্রেলিং-রিটার্ন-টাইপ (নীচে দেখুন) প্রবর্তন করা , একটি জেনেরিক প্যারামিটার প্রকারের স্থানধারক , এটি ফাংশন ঘোষণার বা ল্যাম্বডা-এক্সপ্রেশনটির । [দ্রষ্টব্য: জেনেরিক প্যারামিটারের ধরণের স্থানধারকটি হ'ল এটি বোঝায় যে ফাংশনটি সংক্ষেপিত ফাংশন টেম্পলেট (9.3.3.5 [dcl.fct]) বা ল্যাম্বডা একটি জেনেরিক ল্যাম্বডা (7.5.5 [এক্সপ্রেস.প্রিম.এলম্বদা])। অন্তর্ভুক্ত নোট]
(আপনি যদি লেখার সময় সর্বাধিক সাম্প্রতিক কার্যকরী খসড়ায় শব্দটি পরীক্ষা করেন তবে আপনি কিছুটা আলাদা নিয়ম পাবেন find উপরের নিয়মটি মূল ইস্যু ২৪4747 দ্বারা সংশোধন করা হয়েছিল, যা প্রাগের সি ++ ২০ এর চূড়ান্ত খসড়ায় ভোট হয়েছিল) এক সপ্তাহ আগে কমিটির সভা।)
ডিক্লেয়ার-সুনির্দিষ্টভাবে উল্লেখ করা একটি ফাংশন প্যারামিটার প্যারামিটার ঘোষণা শুরুতে কীওয়ার্ড এবং টাইপ নামের প্রাথমিক ক্রম মধ্যে s। উপরের নিয়মটি auto
শীর্ষ স্তরে অনুমতি দেয় :
void f(auto x);
... তবে কেবল একটি ডেস্ক -স্পেসিফায়ার হিসাবে । auto
যখন একটি ডেসাল-স্পেসিফায়ারের মধ্যে বাসা বাঁধার অনুমতি দেওয়া হয় না :
void f(std::vector<auto> x);
... এবং প্যারামিটার ধরণে অন্য কোথাও অনুমোদিত নয়:
void f(void (*p)(auto));
auto
সরাসরি টেম্পলেটাইজড ভাষায় অনুবাদ করেtypename XYZ
, যা দৃ .়তার সাথে বোঝায় যে এটি বৈধ বাক্য গঠন ax ঝরঝরে ।