【发布时间】:2019-07-19 13:54:12
【问题描述】:
template <int N>
struct Factorial {
static const int value = N * Factorial<N - 1>::value;
};
// Base case via template specialization:
template <>
struct Factorial<0> {
static const int value = 1;
};
所以我可能已经知道,这里“::”运算符的作用是以某种方式将先前执行的操作的内容(N * 阶乘)输入/添加到“值”变量中。但是有人可以更彻底地解释这一点(我不介意对'::'操作员角色的完整解释)。
非常感谢!
【问题讨论】:
-
::运算符在所有情况下都执行相同的操作。它从左边的名字里面访问右边的名字。 -
related/dupe: stackoverflow.com/questions/3082113/… 它解释了这里发生的事情,而不是 :: 是什么
-
@NathanOliver 代码是同一个问题是不同的,所以不是骗子。
-
@NathanOliver 和 Marek R,我实际上发现其他线程很有用,因为我仍在尝试回溯该算法所暗示的内容(不是实际算法,而是 ' value' 变量正在被实例化和更新)。干杯!
标签: c++ templates static-methods template-meta-programming