On Wed, 24 Oct 2018 at 02:06, Olaf wrote: > > the code below compiles on gcc and icc, but not on clang with the error: > > source_file.cpp:14:16: error: 'B' is an incomplete type > if (auto b = dynamic_cast<B*>(a)) > > However fn is an uninstantiated function template. > Is this a glitch in clang or is clang the only one right here? > > class B; > > template<class T> > void fn(A* a, T& x) > { > dynamic_cast<B*>(a); > }
All three compilers are correct here, as far as the standard is concerned. The code is ill-formed, but implementations are not required to diagnose this kind of error. There is no type T that could produce a well-formed instantiation of fn. _______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users