Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में static_assert


static_assert एक फंक्शन है जो प्रोग्रामर्स के लिए प्रोग्राम को कंपाइल करने के बाद आउटपुट को ज्यादा गड़बड़ किए बिना स्क्रीन पर त्रुटि प्रिंट करने के लिए उपयोगी है।

पहले C++11 और C++14 में, static_assert की अलग कार्यक्षमता थी जिसका अर्थ है कि हमें static_assert को परिभाषित करते समय अपना संदेश लिखना पड़ता था। हालांकि, C++17 में static_assert को संदेश पास किए बिना भी इनवोक किया जा सकता है।

यह अन्य असर्ट लाइब्रेरी फंक्शन जैसे BOOST_STATIC_ASSERT के साथ भी संगत है।

सिंटैक्स

{
    auto __range = for-range-initializer;
    auto __begin = begin-expression;
    auto __end = end-expression;
    for (; __begin != __end; ++__begin) {
        range-declaration = *__begin;
        statement
    }
}

__begin और __end के प्रकार अलग होंगे; केवल तुलना ऑपरेटर आवश्यक है। इस परिवर्तन का मौजूदा for लूप्स पर कोई प्रभाव नहीं पड़ता लेकिन यह लाइब्रेरी के लिए अधिक विकल्प प्रदान करता है। उदाहरण के लिए, यह छोटा परिवर्तन रेंज TS (और C++20 में रेंज) को रेंज-आधारित for लूप के साथ काम करने की अनुमति देता है।

C++11 रेंज-आधारित for लूप्स में -

for (for-range-declaration : for-range-initializer) {
    statement;
}

C++14 मानक में, ऐसे लूप्स एक्सप्रेशन निम्न कोड के बराबर था -

{
    auto __range = for-initializer;
    for (auto __begin = begin-expression, __end = end-expression; __begin != __end; ++__begin) {
        for-range-declaration = *__begin;
        statement
    }
}

उदाहरण

#include <bits/stdc++.h>
using namespace std;

template <typename T, size_t N, typename F> // टेम्पलेट घोषणा
void fillarray(array<T, N> &a, F &&f) // मान संग्रहीत करने का फंक्शन {
    static_assert(is_convertible<typename result_of<F()>::type, T>::value, "Incompatible type returned by fun()"); // त्रुटियों को छोड़ने के लिए static_assert सिग्नेचर
    for (auto x : a)
        x = f();
}

int main() {
    array<vector<string>, 20> a;
    fillarray(a, []() { return vector<string>{"TutorialsPoint"}; });
    return 0;
}

आउटपुट

... ... ... prog.cpp:20:61: required from here prog.cpp:10:5: error: static assertion failed: Incompatible type returned by fun()

  1. - C++ में Switch स्टेटमेंट: एक पूर्ण गाइड

    C++ में Switch स्टेटमेंट का उपयोग कैसे करें कंडीशनल स्टेटमेंट्स सभी प्रोग्रामिंग भाषाओं की एक सामान्य विशेषता हैं। इन स्टेटमेंट्स का उपयोग प्रोग्राम के प्रवाह को नियंत्रित करने और यह निर्दिष्ट करने के लिए किया जाता है कि कोड के विशिष्ट ब्लॉक्स कब निष्पादित होने चाहिए। C++ में उपयोग किए जाने वाले मुख

  1. - C++ में मितव्ययी संख्या (Frugal Number)

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया गया है। हमारा कार्य यह जांचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या (FRUGAL NUMBER) − एक संख्या जिसके अंकों की संख्या उस संख्या के अभाज्य गुणनखंडन में अंकों की संख्या से सख्ती से अधिक है। उदाहरण &

  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

    एक पेंटाटोप संख्या को पास्कल के त्रिभुज में पांचवीं संख्या के रूप में वर्णित किया गया है। अब, चूंकि यह पांचवीं संख्या है, इसका मतलब है कि पास्कल के त्रिभुज में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है जो पास्कल के त्रिभुज की चौथी पंक्ति है। तो, इस