[cfe-dev] Current list of issues with parsing <vector> on Linux

Eli Friedman eli.friedman at gmail.com
Wed Jul 22 11:33:07 PDT 2009

I just went through <vector> on Linux to try and compile a current
list of issues.  The list follows.  A few of these look like they
should be easy to fix, and none of them look particularly difficult.
It's possible there are a few other issues hidden by these issues, but
I think this is the majority of the issues.


Templated constructors:
struct A { template <class B> A(B); };

PR4381 (templated class inheriting from member of templated class):
template<class T> struct X {};
template<typename T> struct Y : public X<T>::X { };

Out-of-line definition of function template member of template class:
template <bool A> class X { template <class B> bool x(B z); };
template <bool A> template <class B> bool X<A>::x(B z) { return A == z; }

extern template:
template <class A> class X {};
extern template class X<char>;

class A{};
int a() { return __is_empty(A); }

Explicit destructor call:
class A {};
void test(A* x) { x->~A(); }

"using" with dependent type:
template <class A> class X : A { using A::x; };

Explicit call to conversion operator:
struct s {operator bool() const { return false; } };
bool a(s x) { return bool(x); }

Inherited operator:
struct A { bool operator!=(A&); };
struct B : A {};
bool x(B y, B z) { return y != z; }

More information about the cfe-dev mailing list