c++ - যখন স্টাডি অ্যারে প্রারম্ভিককরণ খুব ছোট হয় তখন সি++ ত্রুটি বাড়াতে পারে?




gcc stdarray (2)

ধরুন আমার একটি অ্যারে আছে:

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

এই ক্ষেত্রে যখন ত্রুটি বা সতর্কতা বাড়ানো সম্ভব? কিছু ক্ষেত্রে এটির সাথে সুস্পষ্টভাবে মিলানো কার্যকর হতে পারে।


আপনার নিজস্ব ক্রিয়েআর পদ্ধতি লেখার পরিবর্তে আপনি 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
}

তবে প্রত্যেকে কনস্ট্রাক্টরের মাধ্যমে সরাসরি অ্যারে শুরু করতে পারে। সুতরাং আপনি যদি কিছু কোডিং গাইডলাইনসের বিরুদ্ধে (স্বয়ংক্রিয়ভাবে) চেক না করেন তবে আপনার কোড বেসের কোনও গ্যারান্টি নেই।


আপনি আপনার বিমূর্ততার নিজস্ব স্তর তৈরি করতে পারেন যা অভিযোগ করে যে আপনি যখন আদিকরণের জন্য ঠিক একই সংখ্যার তর্কগুলি পাস না করেন।

template <std::size_t N, class ...Args>
auto createArray(Args&&... values)
{
   static_assert(sizeof...(values) == N);

   using First = std::tuple_element_t<0, std::tuple<Args...>>;

   return std::array<First, N>{values...};
}

হিসাবে আহবান করা

auto ok = createArray<6>(4, 3, 2, 1, 0, -1);

auto notOk = createArray<6>(4, 3, 2};




stdarray