mem_fun_ref вопрос - PullRequest
       3

mem_fun_ref вопрос

1 голос
/ 12 октября 2010

Почему этот код приводит к ошибке компилятора?

#include <iostream>
#include <algorithm>

using namespace std;

class X
{
    public:
        void Print(int x)
        {
            cout << x << endl;
        }
};

int main()
{
    X x;
    mem_fun_ref<void, X, int>(&X::Print) p;
};

Ошибка main.cpp:18: error: expected ; before p

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Вы намеревались вместо этого написать

mem_fun1_ref_t<void, X, int> p(&X::Print);
           ^^^^             ^^^

?mem_fun_ref это не шаблон класса, а шаблон функции.

2 голосов
/ 12 октября 2010

mem_fun_ref - это шаблон функции, поэтому он не называет тип.

mem_fun_ref<void, X, int>(&X::Print) - это вызов функции, который возвращает значение, поэтому нет смысла в том, что после него стоит p.

Возвращаемое значение этого вызова функции - mem_fun1_ref_t<void, X, int> на тот случай, если вы это искали.

...