OSDN Git Service

Seciton 24.2.2 of the C++ standard, [iterator.iterators], Table 106
authorHoward Hinnant <hhinnant@apple.com>
Thu, 28 Mar 2013 15:47:50 +0000 (15:47 +0000)
committerHoward Hinnant <hhinnant@apple.com>
Thu, 28 Mar 2013 15:47:50 +0000 (15:47 +0000)
commitaab230545459fea4204d7e8a82e93109ebaa880f
treea0eb18574b85c5cc16966a600ebfb3ed94c70d1c
parent42a1b2f0b196633c0327801e810fc98849a00c47
Seciton 24.2.2 of the C++ standard, [iterator.iterators], Table 106
requires that the return type of *r for all iterators r be reference,
where reference is defined in [iterator.requirements.general]/p11 as
iterator_traits<X>::reference, and X is the type of r.

But in CFG.h, the dereference operator of PredIterator and SuccIterator
return pointer, not reference.

Furthermore the nested type reference is value_type&, which is not the
type returned from operator*().

This patch simply makes the iterator::reference type value_type*, which
is what the operator*() returns, and then re-lables the return type as
reference.

From a functionality point of view, the only difference is that the
nested reference type is now value_type* instead of value_type&.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178240 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Support/CFG.h