Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- template <typename T>
- T add(const T &a, const T &b) {
- return a + b;
- }
- template <typename T>
- T sub(const T &a, const T &b) {
- return a - b;
- }
- template <typename T>
- T mul(const T &a, const T &b) {
- return a * b;
- }
- template <typename T>
- T div(const T &a, const T &b) {
- return a / b;
- }
- template <typename T, T (*F)(const T&, const T&)>
- T calc1(T a, T b) {
- return F(a, b);
- }
- enum {
- ADD,
- SUB,
- MUL,
- DIV
- };
- template <typename T, int I=ADD>
- T calc2(T a, T b) {
- return (I==ADD) ? (a+b) : ((I==SUB) ? (a-b) : ((I==MUL) ? (a*b) : (a/b)));
- }
- int main(void) {
- using namespace std;
- cout << calc1<int, add>(2, 4) << endl;
- cout << calc2<float, SUB>(3.0f, 1.0f) << endl;
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement