https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113884
Bug ID: 113884
Summary: GCC rejects valid program saying ambiguous call when
using std::vector
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: jlame646 at gmail dot com
Target Milestone: ---
The following valid program is rejected by gcc
```
#include <type_traits>
#include <vector>
struct A {
A();
};
void func(std::vector<double> values);
void func(std::vector<A> as);
int main() {
func({ 4.2 }); //gcc rejects this
}
```
One way to see that gcc is incorrect here is by just removing the first
overload and then gcc also starts rejecting this, implying the the second
overload is not even viable so how can it make the call ambiguous.
```
#include <type_traits>
#include <vector>
struct A {
A();
};
void func(std::vector<A> as);
int main() {
func({ 4.2 });//now gcc also starts correctly rejecting this implying that
this is not even viable so how can it possibly make the call ambiguous
}
```