Cd सरणी आरंभीकरण बहुत छोटा होने पर C++ त्रुटि उत्पन्न कर सकता है?




gcc stdarray (2)

मान लीजिए कि मेरे पास एक सरणी है:

std::array<int, 6> {4,3,2};

क्या ऐसा होने पर त्रुटि या चेतावनी देना संभव है? कुछ मामलों में यह स्पष्ट रूप से मेल खाने के लिए उपयोगी हो सकता है।


अपनी खुद की createArray विधि लिखने के बजाय आप std::make_array उपयोग कर सकते हैं

यदि आपका कंपाइलर इसका समर्थन करता है।

#include <experimental/array>
int main()
{
    std::array<int,5> arr1= std::experimental::make_array(1, 2, 3, 4, 5); // ok
    std::array<int,3> arr2= std::experimental::make_array(1, 2, 3, 4, 5); // fails
    std::array<int,6> arr3= std::experimental::make_array(1, 2, 3, 4, 5); // fails
}

लेकिन हर कोई कंस्ट्रक्टर के माध्यम से सीधे सरणी में प्रवेश कर सकता है। यदि आप कुछ कोडिंग दिशा-निर्देशों के खिलाफ (स्वचालित रूप से) जांच नहीं करते हैं, तो आपके कोड आधार की कोई गारंटी नहीं है।


आप std::make_array उपयोग कर सकते हैं या ऐसा कुछ कर सकते हैं जिससे विभिन्न प्रकारों का कारण बन सके

std::array<int, 6> = std::make_array(4,3,2);

gcc में यह त्रुटि देता है:

<source>:30:53: error: conversion from 'array<[...],3>' to non-scalar type 'array<[...],6>' requested





stdarray