use*_*670 24 c++ templates initializer-list template-argument-deduction c++17
下面的代码段在 vc++ 和 clang++ 中编译得很好,但在 gcc (inc 9.2) 上失败,除非我添加一个显式的强制转换。哪个编译器就在这里?
#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
}
Run Code Online (Sandbox Code Playgroud)
#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
}
Run Code Online (Sandbox Code Playgroud)