-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlambda.cpp
24 lines (22 loc) · 832 Bytes
/
lambda.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <functional>
#include <iostream>
#include <cmath>
#include <initializer_list>
enum class DivisionPolicy { Ceiling, Floor, Nearest };
int main() {
std::function<int(double,double)> df;
for (auto p : { DivisionPolicy::Ceiling, DivisionPolicy::Floor, DivisionPolicy::Nearest }) {
switch (p) {
case DivisionPolicy::Ceiling:
df = [](double a, double b) -> int { return ceil(a / b); };
break;
case DivisionPolicy::Floor:
df = [](double a, double b) -> int { return floor(a / b); };
break;
case DivisionPolicy::Nearest:
df = [](double a, double b) -> int { return round(a / b); };
break;
}
std::cout << static_cast<int>(p) << ": " << df(7.0, 3.3) << '\n';
}
}