http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50921

             Bug #: 50921
           Summary: GCC cannot find dependent conversion-function-id even
                    if there's a using declaration for it
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: schaub.johan...@googlemail.com


The following code should compile but doesn't.

------- snip
template<typename T>
struct Type { int x; };

template<typename T>
struct Base {
  operator Type<int>();
};

template<typename T>
struct Derived : Base<T> {
  using Base<T>::operator Type<T>;
  void f() { 
    int x = operator Type<T>().x; 
    (void) x;
  }
};

int main() {
  Derived<int> d;
  d.f();
}
------- snap

Error:
------- snip
main1.cpp:13:30: error: there are no arguments to 'operator Type<T>' that
depend on a template parameter, so a declaration of 'operator Type<T>' must be
available
------- snap

The function call is dependent by the dependent function name itself, it
doesn't need dependent call arguments in this case in order to be dependent.

Reply via email to