/
githubmirror
/
CPlusPlusThings
Обзор
Документация
Войти
/
githubmirror
/
CPlusPlusThings
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
learn_class/modern_cpp_30/constexpr/sqrt.cpp
40 строк
780 B
zhangxing
support bazel complie this project and format code.
30 мар 2024, 17:00
30 мар 2024, 17:00
3c8a3f2
Код
Авторство
О чём код?
// // Created by light on 20-1-7. // #include <array> #include <iostream> int sqr(int n) { return n * n; } int rand() { return std::rand(); } // constant expression constexpr int sqr1(int n) { return n * n; } constexpr int factorial(int n) { // n是普通的int 不能使用static_assert // static_assert(n>=0); //error // 正确方式 if (n < 0) { throw std::invalid_argument("Arg must be non-negative"); } if (n == 0) { return 1; } else { return n * factorial(n - 1); } } int main() { int a[sqr(3)]; // ok const int n1 = sqr(3); // ok constexpr int n = sqr1(3); // constexpr=constant expression 常量表达式 std::array<int, n> aa; // ok std::array<int, factorial(10)> b; // cordump int cc[rand()]; return 0; }