LINUX.ORG.RU

ломается цепочка вызовов параметризованных методов

 ,


1

1

вот такой простой пример

struct Accessor{
    template <typename A> void plot(A &a) const { 
        a.plot_impl<0>(*this); 
    }
};

struct XXX{
    template <int I> void plot_impl(const Accessor&){}
    void plot(const Accessor &acc){ acc.plot(*this); }
};

при сборке вылетает ошибка

$ g++ -std=c++11 -c test-accessor.cpp
test-accessor.cpp: In instantiation of ‘void Accessor::plot(A&) const [with A = XXX]’:
test-accessor.cpp:9:48:   required from here
test-accessor.cpp:3:14: error: invalid operands of types ‘<unresolved overloaded function type>’ and ‘int’ to binary ‘operator<’
   a.plot_impl<0>(*this);
   ~~~~~~~~~~~^~

gcc 7.5.0

ЧЯНТД? Почему он не видит что plot_impl параметризована?

@monk

★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Ответ на: комментарий от filosofia

Да я читал про это у Вандервуда, но забыл;-(

Редко так приходится изгаляться.

AntonI ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.