Я изо всех сил пытаюсь понять определение шаблонов. Мое основное понимание состоит в том, что определения шаблонов позволяют сделать тип данных либо для возврата, либо для аргументов как общие. Это аргумент шаблона - это дат данных, для которого компилятор создает и ссылается во время компиляции, < /p>
Но я не могу понять сложные определения, как ниже: < /p>
#include
#include
template
struct factorial : std::integral_constant {};
template
struct factorial : std::integral_constant {};
int main() {
std::cout
где < /p>
template
struct integral_constant {
static constexpr T value = v;
typedef T value_type;
typedef integral_constant type;
constexpr operator T() { return v; }
};
< /code>
output: < /p>
120
< /code>
Действительно сложно визуализировать, как шаблоны устанавливаются: < /p>
template
struct integral_constant {
static constexpr int value = 5 * factorial::value;
typedef int value_type;
typedef integral_constant type;
constexpr operator int() { return 5 * factorial::value; }
};
Подробнее здесь: https://stackoverflow.com/questions/795 ... efinitions