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

Question #251 Difficulty: 2

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

    #include <iostream>

template<class T>
void f(T) { std::cout << 1; }

template<>
void f<>(int*) { std::cout << 2; }

template<class T>
void f(T*) { std::cout << 3; }

int main() {
    int *p = nullptr; 
    f( p );
}

Hint:

A declaration of a function template being explicitly specialized shall precede the declaration of the explicit specialization.
During overload resolution, only the base function templates are considered, not specialisations.

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.