The following snippet compiles fine in vc++ and clang++, but fails on gcc (inc 9.2) unless i add an explicit cast. Which compiler is right here?
#include <initializer_list> template<typename T> void Task(void) {} int main() { for(auto p_task: {&Task<int>}) {} // error // for(auto p_task: {static_cast<void (*)(void)>(&Task<int>)}) {} // ok }
<source>: In function 'int main()': <source>:8:33: error: unable to deduce 'std::initializer_list<auto>&&' from '{(& Task<int>)}' 8 | for(auto p_task: {&Task<int>}) {} // error | ^ <source>:8:33: note: couldn't deduce template parameter 'auto'
online compiler
GCC was wrong, but not anymore! Thanks to @Barry reporting it, and Marek Polacek fixing it, the live demo can now be compiled with GCC trunk (future GCC 11).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With