http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47765
Summary: Wrong template deduction
Product: gcc
Version: 4.5.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
The following code fails to compile neither with g++ version 4.4.5
(Ubuntu/Linaro 4.4.4-14ubuntu5) nor with 4.5.1:
template<typename ItT>
struct traits {
typedef typename ItT::value_type value_t;
};
template<typename ItT>
struct A {
typedef typename traits<ItT>::value_t value_t;
};
template<typename T>
struct B {
typedef T type_t;
};
struct C {
template<typename T, typename T2>
void foo(const A<T>& r) {}
template<typename T>
void foo(const B<T>& r) {}
};
void foo()
{
B<char> b;
C c;
c.foo(b);
c.foo<char>(b); // fails to compile
}