LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Ага, то есть там две проблемы. Первая описана по ссылке, но даже если заменить инициализатор на Functors{std::forward<Args>(args)...}... (под GCC оно ошибочно работает как оригинальный вариант)

Все равно остается проблема дедукции типов: https://wandbox.org/permlink/QIpMcJHL0iZkhMIM

prog.cc: In function 'int main()':
prog.cc:36:14: error: no match for call to '(CompositeVisitor<>) (Foo&)'
   36 |   visitor(foo);
      |              ^
prog.cc:37:14: error: no match for call to '(CompositeVisitor<>) (Bar&)'
   37 |   visitor(bar);
      |              ^
prog.cc:38:14: error: no match for call to '(CompositeVisitor<>) (Baz&)'
   38 |   visitor(baz);
      |  

Исходная версия KennyMinigun, :

Ага, то есть там две проблемы. Первая описана по ссылке, но даже если заменить инициализатор на Functors{std::forward<Args>(args)...}... (под GCC оно ошибочно работает как оригинальный вариант)

Все равно остается проблема дедукции типов:

prog.cc: In function 'int main()':
prog.cc:36:14: error: no match for call to '(CompositeVisitor<>) (Foo&)'
   36 |   visitor(foo);
      |              ^
prog.cc:37:14: error: no match for call to '(CompositeVisitor<>) (Bar&)'
   37 |   visitor(bar);
      |              ^
prog.cc:38:14: error: no match for call to '(CompositeVisitor<>) (Baz&)'
   38 |   visitor(baz);
      |