Получаю “no matching function” от GCC
От: gcooler  
Дата: 01.01.13 15:45
Оценка:
Почему не работает этот простой код?


template<class U>
class retype 
{ 
    typedef U type; 
};

class object
{
public:
    template<class U>
    int create(typename retype<U>::type p)
    {
        return 4;
    }
};

int main()
{
    int n = object().create(5);

    return 0;
}


Получаю такую ошибку при компиляции GCC:


test.cpp: In function ‘int main()’:
test.cpp:20: error: no matching function for call to ‘object::create(int)’


В чем может быть проблема?
Re: Получаю “no matching function” от GCC
От: breee breee  
Дата: 01.01.13 16:02
Оценка:
Здравствуйте, gcooler, Вы писали:

G>Почему не работает этот простой код?


http://stackoverflow.com/questions/1268504/why-is-the-template-argument-deduction-not-working-here
Re: Получаю “no matching function” от GCC
От: Roman Odaisky Украина  
Дата: 02.01.13 21:08
Оценка:
Здравствуйте, gcooler, Вы писали:

G>
G>template<class U>
G>class retype 
G>{ 
G>    typedef U type; 
G>};
G>


G>В чем может быть проблема?


Компилятор не может из того, что retype<U>::type — int, вывести U. Тем более, что в общем случае эта задача нерешаема: вдруг у тебя рядом найдется template<> class retype<char> { typedef int type; };?
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.