Author
anonymous
over 7 years ago
Language
Compiler
Options
Author
anonymous
over 7 years ago
$
prog.cc: In function 'std::ostream& operator<<(std::ostream&, const Value&)':
prog.cc:29:15: error: no match for call to '(operator<<(std::ostream&, const Value&)::<lambda(auto:1)>) (Foo)'
visitor(Foo{});
^
prog.cc:20:32: note: candidate: template<class auto:1> operator<<(std::ostream&, const Value&)::<lambda(auto:1)>
auto visitor = [&](auto a) -> decltype(static_cast<std::ostream&(*)(std::ostream&, const decltype(a)&)>(&operator<<)(os, a))
^~~~~~~~
prog.cc:20:32: note: template argument deduction/substitution failed:
prog.cc: In substitution of 'template<class auto:1> operator<<(std::ostream&, const Value&)::<lambda(auto:1)> [with auto:1 = Foo]':
prog.cc:29:15: required from here
prog.cc:20:41: error: invalid static_cast from type '<unresolved overloaded function type>' to type 'std::ostream& (*)(std::ostream&, const Foo&) {aka std::basic_ostream<char>& (*)(std::basic_ostream<char>&, const Foo&)}'
auto visitor = [&](auto a) -> decltype(static_cast<std::ostream&(*)(std::ostream&, const decltype(a)&)>(&operator<<)(os, a))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prog.cc:19:57: warning: unused parameter 'value' [-Wunused-parameter]
std::ostream &operator<<(std::ostream &os, const Value &value) {
^~~~~
Exit Code:
1