কেউ আমাকে বোঝাতে পারেন কেন প্রথম টেমপ্লেট মেটা-প্রোগ্রামিংয়ের উপায়টি অসীম লুপে চলেছে, তবে দ্বিতীয়টি সঠিকভাবে চলে।
#include <iostream>
using namespace std;
template<int N, int M>
struct commondivs {
static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val;
};
template<int N>
struct commondivs<N,N> {
static const int val = N;
};
int commondiv(int N, int M){
if(N==M){
return N;
}
return (N<M)?commondiv(N,(M-N)):commondiv((N-M),M);
}
int main() {
cout << commondivs<9,6>::val << endl;
cout << commondiv(9,6) << endl;
return 0;
}
constexpr
একটি বিকল্প নয়।
constexpr
এটি কোনও বিকল্প নয়। (এটি সি ++ 11 এ প্রবর্তিত হয়েছিল)। এটি বিদ্যমান উত্তরগুলি অকার্যকর করে। এক্সজুল, দয়া করে আপনি কোন সি ++ সংস্করণে সীমাবদ্ধ তা স্পষ্ট করুন।