You've answered 0 of 166 questions correctly. (Clear)

Question #350 Difficulty: 2

According to the C++23 standard, what is the output of this program?

    #include <functional>
#include <iostream>

struct Q {
    int v = 0;

    Q() { std::cout << "D"; }
    Q(const Q&) { std::cout << "C"; }
    Q(Q&&) { std::cout << "M"; }

    void change() { ++v; }
    void func() { std::cout << v; }
};

void takeQfunc(std::function<void(Q)> qfunc) {
    Q q;
    q.func();
    qfunc(q);
    q.func();
}

int main() {
    takeQfunc([](Q&& q) { q.change(); });
}

Hint:

How does the parameter type to qfunc differ from the parameter type to the lambda?

Answer:

Problems? View a hint or try another question.

I give up, show me the answer (make 3 more attempts first).

Mode : Training

You are currently in training mode, answering random questions. Why not Start a new quiz? Then you can boast about your score, and invite your friends.

Contribute

Create your own!

Android app

Get Sergey Vasilchenko's CppQuiz Android app.

C++ Brain Teasers

Get the book, support the site! C++ Brain Teasers cover