मान लीजिए कि आप एक टेम्पलेट वर्ग के एक C++ 0x std :: सरणी सदस्य है और आप एक निर्माता कि iterators का समय लगता है के माध्यम से यह प्रारंभ करना चाहते हैं पर:एसटीडी का प्रारंभ :: सरणी
template <typename Tp, size_t N>
class Test
{
public:
template <typename Iterator>
Test(Iterator first, Iterator last)
{
if (std::distance(first,last) > N)
throw std::runtime_error("bad range");
std::copy(first, last, _M_storage.begin());
}
private:
std::array<Tp, N> _M_storage;
};
मान लीजिए कि आप अपने स्टोरेज के आकार के साथ एक रेंज प्रदान कर रहे हैं, क्या स्टोरेज में टीपीएस के सुपरफ्लस डिफॉल्ट कन्स्ट्रक्टर से परहेज करते हुए, कन्स्ट्रक्टर प्रारंभकर्ता में std :: array को प्रारंभ करना संभव है? क्या इस मामले में std :: startizer_list <> का फायदा उठाना संभव है?
वैसे, एक पहचानकर्ता जो अंडरस्कोर से शुरू होता है और उसके बाद पूंजी पत्र आरक्षित होता है। इसके अलावा, यह 'std :: दूरी (पहला, अंतिम) होना चाहिए। – GManNickG
ओवरसइट तय। अतिरिक्त डिफ़ॉल्ट रचनाकारों के साथ समस्या बनी हुई है ... –