static_assert হল একটি কম্পাইল-টাইম অ্যাসারশন যা প্রোগ্রামারকে কম্পাইলেশনের সময় ত্রুটি বার্তা দেখাতে সাহায্য করে, রানটাইম আউটপুটকে প্রভাবিত না করে।
C++11 এবং C++14-এ static_assert-এ কাস্টম বার্তা লিখতে হতো। কিন্তু C++17 থেকে বার্তা ছাড়াও এটি ব্যবহার করা যায়। এটি BOOST_STATIC_ASSERT-এর মতো অন্যান্য লাইব্রেরির সাথে সাংগতিক।
সিনট্যাক্স
static_assert(constant_expression, "error_message"); // C++11/14 static_assert(constant_expression); // C++17 থেকে
উদাহরণ
#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()");
for (auto &x : a)
x = f();
}
int main() {
array<vector<string>, 20> a;
fillArray(a, []() { return vector<string>{"TutorialsPoint"}; });
return 0;
}
আউটপুট
prog.cpp:10:5: error: static assertion failed: Incompatible type returned by fun()
উপরের কোডে টেমপ্লেট ফাংশনটি কম্পাইল টাইমে টাইপ চেক করে এবং অমিল পাওয়ার কারণে ত্রুটি দেখায়।