在 C++ 中使用模板元编程,找到两个整数的 GCD

Using template metaprogramming in C++, find the GCD of two integers

我想知道一个模板元编程解决使用递归欧几里得算法求两个数的GCD问题的方法,下面给出供您参考。

function gcd(a, b)
    if b = 0
       return a; 
    else
       return gcd(b, a mod b);

非常感谢任何帮助!

是这样的吗?

#include <utility>
#include <iostream>

template<int a, int b> struct gcd
{
    static constexpr auto value = gcd<b, a % b>::value;
};

template<int a>
struct gcd<a, 0>
{
    static constexpr auto value = a;
};

int main()
{
    auto x = gcd<10,5>::value;

    std::cout << x << std::endl;
}