From 525bf8ee8ed372684e06ee395389e37828cc7cf3 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Fri, 26 Mar 2010 19:39:05 +0000 Subject: [PATCH] Tell "the rest of the story" about LLVM's iterators' implicit conversions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99642 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/ProgrammersManual.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/ProgrammersManual.html b/docs/ProgrammersManual.html index a2d32d4e985..d1865f13a79 100644 --- a/docs/ProgrammersManual.html +++ b/docs/ProgrammersManual.html @@ -1843,6 +1843,21 @@ void printNextInstruction(Instruction* inst) { +

Unfortunately, these implicit conversions come at a cost; they prevent +these iterators from conforming to standard iterator conventions, and thus +from being usable with standard algorithms and containers. For example, it +prevents the following code, where B is a BasicBlock, +from compiling:

+ +
+
+  llvm::SmallVector<llvm::Instruction *, 16>(B->begin(), B->end());
+
+
+ +

Because of this, these implicit conversions may be removed some day, +and operator* changed to return a pointer instead of a reference. + -- 2.34.1