পরিচয়
অনেক সময় ফাংশন রিটার্ন ভ্যালু চেক করে কন্ডিশনাল অপারেশন করতে হয়। C++17-এ ইনিเชালাইজার (initializer) সরাসরি if-else বা switch ব্লকে রাখা যায়।
সাধারণ ফরম্যাট
// C++17 এর আগে
auto var1 = foo(Params);
if (var1 == /* some value */) { ... } else { ... }
// C++17-এ
if (init-statement; condition) { ... } else { ... }
ইনিเชালাইজারের স্কোপ শুধু ওই if-else ব্লকে সীমাবদ্ধ থাকে। একই নামের ভেরিয়েবল অন্য ব্লকে ব্যবহার করা যায়।
Switch স্টেটমেন্টে ইনিเชালাইজার
switch (initial-statement; variable) {
// cases
}
সম্পূর্ণ প্রোগ্রাম উদাহরণ
// Program to demonstrate init if-else feature in C++17
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
srand(time(NULL));
// Before C++17
int I = 2;
if (I % 2 == 0) cout << I << " is even number" << endl;
// After C++17
if (int I = 4; I % 2 == 0) cout << I << " is even number" << endl;
// Switch statement
switch (int I = rand() % 100; I) {
default: cout << "I = " << I << endl; break;
}
}