4
การเขียนโปรแกรมเมตาเทมเพลต
มีใครบางคนสามารถอธิบายให้ฉันฟังได้ว่าทำไมเมธอดการเขียนโปรแกรมเมตาเทมเพลตแรกกำลังจะวนซ้ำไม่สิ้นสุด แต่อันที่สองทำงานได้อย่างถูกต้อง #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 …