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

सी++ में static_assert

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

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

यह BOOST_STATIC_ASSERT जैसे अन्य मुखर पुस्तकालयों के कार्यों के साथ भी संगत है।

सिंटैक्स

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

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

C++11 श्रेणी-आधारित के लिए . में लूप्स -

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

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

{
   auto __range = for-initializer;
   for ( auto __begin= begin-expresson, __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> //Template Declaration
void fillarray (array<T, N> & a, F && f) //Function to store the values{
   static_assert(is_convertible<typename result_of<F()>::type, T>::value,"Incompatible type returned by fun()"); //static_assert signature to ommit the errors.
   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++

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

  1. C++ में मितव्ययी संख्या

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

  1. सी++ पेंटाटोप नंबर

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