On 21 June 2015 at 16:56, Julian Klappenbach wrote:
> Version info:
>
> Configured with:
> --prefix=/Applications/Xcode.app/Contents/Developer/usr
> --with-gxx-include-dir=/usr/include/c++/4.2.1
> Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
> Target: x86_64-apple-darwin14.3.0
> Thread model: posix

You're not using GCC, you're using LLVM.

Even if you were using GCC "is this a bug?" questions are off-topic on
this list, they belong in the Bugzilla bug tracker or the gcc-help
mailing list, not here.

> Since I have many different types of iterators, I had created a basic
> interface to pass them around, an abstract virtual class with pure
> virtual members.  The problem occurs when the logic behind the range
> based for loop calls begin, and receives the pure virtual base class
> of the iterator.  This causes the compiler error:
>
> ../src/ListTests.cpp:156:13: error: variable type 'Iterable<int>' is
> an abstract class

It sounds like your begin() function is declared to return an abstract
class by value, that is not possible in C++. THis has nothign to do
with range-based for, you just can't return an abstract class type
from a function.

Reply via email to