নিম্নলিখিত উদাহরণে, ফাংশন আর্গুমেন্টগুলি ব্যবহার করে একটি অভিব্যক্তি ভালভাবে গঠিত কিনা তা একটি অভিব্যক্তিগুলির সাথে পরীক্ষা করতে ব্যবহৃত হয়। প্রয়োজনীয় প্রকাশটি কোনও যুক্তি গ্রহণ করে না; এটি সরাসরি ফাংশন স্কোপে ভেরিয়েবলগুলি ব্যবহার করে:
#include <cstddef>
#include <vector>
template<typename T>
void Resize(T &v, std::size_t const n)
{
if constexpr (requires { v.resize(n); })
v.resize(n);
}
template<typename T>
void Eziser(T &v, std::size_t const n)
{
if constexpr (requires { v.eziser(n); })
v.eziser(n);
}
int main()
{
std::vector<int> v;
Resize(v, 10u);
Eziser(v, 10u);
}
উপরের কোডটি ক্ল্যাং কনসেপ্ট শাখার সাথে সংকলন করে। তবে, জিসিসি 10 কেবল এই কলটি গ্রহণ করে Resize
। জিসিসি 9 আইসিইএস। ঝাঁকুনি কি এটি মেনে নেওয়ার অধিকার আছে?
Resize
এবং Eziser
হওয়া উচিত প্রত্যাখ্যান) অথবা উভয় ফাংশন কম্পাইল করা উচিত নয়। আমি বলবো ঝাঁকুনি ঠিক আছে।