auto C++11 और बाद का एक कीवर्ड है जिसका उपयोग ऑटोमैटिक टाइप डिडक्शन के लिए किया जाता है। टाइप इन्फरेंस या डिडक्शन प्रोग्रामिंग भाषा में किसी एक्सप्रेशन के डेटा टाइप का स्वचालित पता लगाने को संदर्भित करता है। यह कुछ स्ट्रॉन्गली स्टैटिकली टाइप्ड भाषाओं में मौजूद एक विशेषता है। उदाहरण के लिए, आप एक वेक्टर पर पुनरावृति करने के लिए एक इटरेटर बनाना चाहते हैं, आप इसके लिए बस auto का उपयोग कर सकते हैं।
उदाहरण
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> arr(10);
for(auto it = arr.begin(); it != arr.end(); it++) {
cin >> *it;
}
return 0;
}
उपरोक्त प्रोग्राम में, it स्वचालित रूप से std::vector<int>::iterator प्रकार प्राप्त करेगा।
decltype टाइप स्पेसिफायर किसी निर्दिष्ट एक्सप्रेशन का प्रकार देता है। Auto के विपरीत जो वेरिएबल को असाइन किए जा रहे मानों के आधार पर प्रकारों का अनुमान लगाता है, decltype इसमें पास किए गए एक्सप्रेशन से प्रकार का अनुमान लगाता है। Decltype द्वारा लौटाया गया मान सीधे दूसरे वेरिएबल को परिभाषित करने के लिए उपयोग किया जा सकता है। उदाहरण के लिए, उपरोक्त कोड को decltype का उपयोग करके निम्नानुसार लिखा जा सकता है –
उदाहरण
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> arr(10);
for (decltype(arr.begin()) it = arr.begin(); it != arr.end(); it++) {
cin >> *it;
}
return 0;
}
ध्यान दें कि decltype द्वारा दर्शाया गया प्रकार auto द्वारा डिडक्ट किए गए प्रकार से भिन्न हो सकता है। आप C++ में टाइप डिडक्शन की इस 12-पृष्ठ की व्याख्या में इन सूक्ष्म अंतरों के बारे में अधिक पढ़ सकते हैं – thbecker.net।