[cfe-dev] clang fails to build templated C++ code that other compilers can

Sean McBride sean at rogue-research.com
Tue Jul 27 08:25:18 PDT 2010


We are trying to get VTK, an open source project, to build with clang
(trunk 109432).  It builds with many other compilers on many platforms. 
We have one problem down to the following:

#include <iostream>

class vtkArray 
  void PrintSelf(std::ostream &os) { 
    std::cout << "vtkArray PrintSelf" << std::endl;

template<class ThisT, class BaseT>
class vtkTypeTemplate : public BaseT
  typedef BaseT Superclass;

template<typename T>
class vtkTypedArray : public vtkTypeTemplate<vtkTypedArray<T>, vtkArray>
  void PrintSelf(std::ostream &os);

template<typename T>
void vtkTypedArray<T>::PrintSelf(std::ostream &os)
  this->vtkTypedArray<T>::Superclass::PrintSelf(os); // ERROR

int main (int argc, char const *argv[])
  vtkTypedArray<int> array;
  return 0;

Which gives:

test.cp:28:27: error: no member named 'Superclass' in 'vtkTypedArray<T>'

I'm not enough of a C++ expert to know if clang is in error or just more
strict in some way.  Any language lawyers here? :)


Sean McBride, B. Eng                 sean at rogue-research.com
Rogue Research                        www.rogue-research.com 
Mac Software Developer              Montréal, Québec, Canada
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: test.cp
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20100727/2c6cc419/attachment.ksh>

More information about the cfe-dev mailing list