三回啊三回

题目描述

“函数” call3 接受一个可以调用的参数 f(即 f 可以出现在函数调用运算符左侧),f不需要参数。执行 call3(f) 时,将 f 调用三遍。

关于输入

关于输出

见样例输出

参考答案

#include <iostream>

template <typename T>
void call3(T f) {
    f();
    f();
    f();
}

void f1() {
    int x = 0;
    std::cout << ++x << std::endl;
}
void f2() {
    static int x = 0;
    std::cout << ++x << std::endl;
}
struct F34 {
    int x{0};
    void operator()() {
        std::cout << ++x << std::endl;
    }
};
F34 f3, f4;
int main() {
    int v = 42;
    auto f5 = [&]() {
        std::cout << ++v << std::endl;
    };
    call3(f1);
    call3(f2);
    call3(f3);
    call3(f4);
    call3(f5);
}