जब बुला std::sort()एक पर std::array:
#include <vector>
#include <array>
#include <algorithm>
int main() {
std::vector<int> foo{4, 1, 2, 3};
sort(begin(foo), end(foo));
std::array<int, 4> foo2{4, 1, 2, 3};
sort(begin(foo2), end(foo2));
}
जीसीसी और क्लैंग दोनों एक त्रुटि को इस तरह से लौटाते std::arrayहैं - क्लैंग कहते हैं
त्रुटि: अघोषित पहचानकर्ता 'सॉर्ट' का उपयोग; क्या आपका मतलब था 'एसटीडी :: सॉर्ट'?
std::sort(begin(foo2), end(foo2))समस्या को ठीक करने के लिए बदल रहा है।
MSVC उपरोक्त कोड को लिखित रूप में संकलित करता है।
क्यों के बीच इलाज में अंतर std::vectorऔर std::array; और कौन सा संकलक सही है?
std::sortजो तर्क-निर्भर लुकअप की ओर जाता है (जैसे आपके पास पहले से है std::beginऔर std::end)?
namespace std, जहां एक साधारण सूचक प्रकार काम करता है। मेरा मानना है कि यह ओवररन और अन्य सामान्य त्रुटियों का पता लगाने के लिए डिबग-बिल्ड चेक सम्मिलित करना है।
sort(...->std::sort(...। मुझे लगता है कि ADL (तर्क पर निर्भर लुकअप) है जो आपको ट्रिप कर रहा है। वह, या कटौती गाइड। किसी भी स्थिति में; आपके द्वारा कॉल किए जाने वाले कार्यों को हमेशा योग्य बनाएं।