https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106214

            Bug ID: 106214
           Summary: Vector template argument deduction fails for templated
                    function element
           Product: gcc
           Version: 11.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: henrik.nortamo at csc dot fi
  Target Milestone: ---

Created attachment 53262
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53262&action=edit
full compiler error message

The following code fails to compile with the command
g++ -Wall -Wextra --std=c++17 minimal.cpp

minimal.cpp
"""
#include <vector>

template<typename T> 
void foo() {} 

int main(){
    std::vector V{foo<float>};
    return 0;
}
"""

The error emitted is (full error as an attachment ):

"""
minimal.cpp: In function ‘int main()’:
minimal.cpp:7:29: error: class template argument deduction failed:
     std::vector V{foo<float>};
                             ^
minimal.cpp:7:29: error: no matching function for call to ‘vector(<unresolved
overloaded function type>)’
In file included from /usr/include/c++/8/vector:64
"""

Tested to fail in the same way for the following g++ versions:

7.4.0  
8.3.0  
8.5.0  
9.1.0  
9.4.0  
11.2.0 
11.3.0 

Code compiles using Clang 13.0.0, icpc (ICC) 19.0.4 and 
"Intel(R) oneAPI DPC++/C++ Compiler 2022.1.0"

Reply via email to