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

Question #112 Difficulty: 2

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

    #include <iostream>
#include <utility>

struct A
{
    A() { std::cout << "1"; }
    A(const A&) { std::cout << "2"; }
    A(A&&) { std::cout << "3"; }
};

struct B
{
    A a;
    B() { std::cout << "4"; }
    B(const B& b) : a(b.a) { std::cout << "5"; }
    B(B&& b) : a(b.a) { std::cout << "6"; }
};

int main()
{
    B b1;
    B b2 = std::move(b1);
}

Hint:

When members are not mentioned in the member initializer list, when are they initialized?

Note that the expression b.a, which names a data member of an rvalue reference, is an lvalue here.

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