Ok, this is what I am going to commit. 

I am not really happy with the fact that RandomListIterator really is
a std::list<>::iterator. I'd like it to be a real
random_access_iterator. We should probably create our own. (And no; I
don't agree that we should only work with offsets and indices,
iterators are nice and we should use them.)

This works for me.

[[
        * output_latex.h:
        * buffer.h:
        * CutAndPaste.h:
        * pariterator.h:
        * paragraph_funcs.h:
        * output_linuxdoc.h:
        * output_docbook.h:
        * insets/insettext.h: get forward declaration of ParagraphList

        * output_plaintext.C:
        * bufferlist.C:
        * undo.C:
        * lyxtext.h:
        * undo.h:
        * buffer_funcs.C:
        * insets/insetbibitem.C: get proper ParagraphList decls

        * output_linuxdoc.C (linuxdocParagraphs):
        * output_latex.C (TeXOnePar):
        * insets/insettext.C (appendParagraphs):
        * insets/insetcharstyle.C (docbook): use std::distance
        
        * CutAndPaste.C (pasteSelectionHelper, copySelectionHelper):
        * paragraph_funcs.C (breakParagraph,
        breakParagraphConservative, mergeParagraph):
        * text.C (acceptChange, rejectChange):
        * text2.C (deleteEmptyParagraphMechanism): use boost::next

        * output_docbook.C (several places): use boost::next and
        std::distance

        * ParagraphList_fwd.h: modify to provid a forward declaratoin
        of the new ParagraphList.

        * RandomAccessList.h: New container for Paragraphs from
        Abdelrazak Younes

        * ParagraphList.h: new file, setup user of RandomAccessList

        * paragraph.C: remove ParagraphList constructor from this file
]]

Index: src/insets/insettext.h
===================================================================
--- src/insets/insettext.h	(revision 13423)
+++ src/insets/insettext.h	(working copy)
@@ -16,6 +16,7 @@
 #include "RowList_fwd.h"
 #include "lyxfont.h"
 #include "lyxtext.h"
+#include "ParagraphList_fwd.h"
 
 #include "support/types.h"
 
@@ -27,7 +28,6 @@
 class CursorSlice;
 class Dimension;
 class LColor_color;
-class ParagraphList;
 
 
 /**
Index: src/insets/insetbibitem.C
===================================================================
--- src/insets/insetbibitem.C	(revision 13423)
+++ src/insets/insetbibitem.C	(working copy)
@@ -19,7 +19,7 @@
 #include "lyxfont.h"
 #include "lyxlex.h"
 #include "paragraph.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 
 #include "frontends/font_metrics.h"
 
Index: src/insets/insetcharstyle.C
===================================================================
--- src/insets/insetcharstyle.C	(revision 13423)
+++ src/insets/insetcharstyle.C	(working copy)
@@ -289,6 +289,7 @@
 int InsetCharStyle::docbook(Buffer const & buf, ostream & os,
 			    OutputParams const & runparams) const
 {
+	ParagraphList::const_iterator beg = paragraphs().begin();
 	ParagraphList::const_iterator par = paragraphs().begin();
         ParagraphList::const_iterator end = paragraphs().end();
 
@@ -298,7 +299,7 @@
 
         for (; par != end; ++par) {
 		par->simpleDocBookOnePar(buf, os, runparams,
-				 outerFont(par - paragraphs().begin(),
+					 outerFont(std::distance(beg, par),
 						   paragraphs()));
         }
 
Index: src/insets/insettext.C
===================================================================
--- src/insets/insettext.C	(revision 13423)
+++ src/insets/insettext.C	(working copy)
@@ -422,7 +422,8 @@
 	ParagraphList::iterator pit = plist.begin();
 	ParagraphList::iterator ins = pl.insert(pl.end(), *pit);
 	++pit;
-	mergeParagraph(buffer->params(), pl, ins - pl.begin() - 1);
+	mergeParagraph(buffer->params(), pl,
+		       std::distance(pl.begin(), ins) - 1);
 
 	for_each(pit, plist.end(),
 		 bind(&ParagraphList::push_back, ref(pl), _1));
Index: src/output_plaintext.C
===================================================================
--- src/output_plaintext.C	(revision 13423)
+++ src/output_plaintext.C	(working copy)
@@ -19,7 +19,7 @@
 #include "output.h"
 #include "outputparams.h"
 #include "paragraph.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 
 #include "support/lstrings.h"
Index: src/output_latex.h
===================================================================
--- src/output_latex.h	(revision 13423)
+++ src/output_latex.h	(working copy)
@@ -12,11 +12,12 @@
 #ifndef OUTPUT_LATEX_H
 #define OUTPUT_LATEX_H
 
+#include "ParagraphList_fwd.h"
+
 #include <string>
 
 class Buffer;
 class OutputParams;
-class ParagraphList;
 class TexRow;
 
 /// Just a wrapper for the method below, first creating the ofstream.
Index: src/bufferlist.C
===================================================================
--- src/bufferlist.C	(revision 13423)
+++ src/bufferlist.C	(working copy)
@@ -22,7 +22,7 @@
 #include "lyx_main.h"
 #include "output_latex.h"
 #include "paragraph.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 
 #include "frontends/Alert.h"
 
Index: src/undo.C
===================================================================
--- src/undo.C	(revision 13423)
+++ src/undo.C	(working copy)
@@ -22,6 +22,7 @@
 #include "BufferView.h"
 #include "lyxtext.h"
 #include "paragraph.h"
+#include "ParagraphList.h"
 
 #include "mathed/math_support.h"
 #include "insets/inset.h"
Index: src/text2.C
===================================================================
--- src/text2.C	(revision 13423)
+++ src/text2.C	(working copy)
@@ -1258,7 +1258,7 @@
 			   max(old.pit() - 1, pit_type(0)),
 			   min(old.pit() + 1, old.lastpit()));
 		ParagraphList & plist = old.text()->paragraphs();
-		plist.erase(plist.begin() + old.pit());
+		plist.erase(boost::next(plist.begin(), old.pit()));
 
 		// see #warning above
 		if (cur.depth() >= old.depth()) {
Index: src/ParagraphList_fwd.h
===================================================================
--- src/ParagraphList_fwd.h	(revision 13423)
+++ src/ParagraphList_fwd.h	(working copy)
@@ -12,22 +12,11 @@
 #ifndef PARAGRAPH_LIST_FWD_H
 #define PARAGRAPH_LIST_FWD_H
 
-#include "paragraph.h"
+template <class T>
+class RandomAccessList;
 
-#include <vector>
+class Paragraph;
 
-class ParagraphList : public std::vector<Paragraph>
-{
-public:
-	///
-	typedef std::vector<Paragraph> BaseType;
-	///
-	ParagraphList();
-	///
-	template <class Iter>
-	ParagraphList(Iter beg, Iter end)
-		: BaseType(beg, end)
-	{}
-};
+typedef RandomAccessList<Paragraph> ParagraphList;
 
 #endif
Index: src/CutAndPaste.C
===================================================================
--- src/CutAndPaste.C	(revision 13423)
+++ src/CutAndPaste.C	(working copy)
@@ -214,14 +214,16 @@
 
 	// Paste it!
 	if (empty) {
-		pars.insert(pars.begin() + pit, insertion.begin(),
+		pars.insert(boost::next(pars.begin(), pit),
+			    insertion.begin(),
 		            insertion.end());
 
 		// merge the empty par with the last par of the insertion
 		mergeParagraph(buffer.params(), pars,
 		               pit + insertion.size() - 1);
 	} else {
-		pars.insert(pars.begin() + pit + 1, insertion.begin(),
+		pars.insert(boost::next(pars.begin(), pit + 1),
+			    insertion.begin(),
 		            insertion.end());
 
 		// merge the first par of the insertion with the current par
@@ -314,7 +316,8 @@
 	BOOST_ASSERT(startpit != endpit || start <= end);
 
 	// Clone the paragraphs within the selection.
-	ParagraphList paragraphs(pars.begin() + startpit, pars.begin() + endpit + 1);
+	ParagraphList paragraphs(boost::next(pars.begin(), startpit),
+				 boost::next(pars.begin(), endpit + 1));
 
 	for_each(paragraphs.begin(), paragraphs.end(), resetOwnerAndChanges());
 
Index: src/lyxtext.h
===================================================================
--- src/lyxtext.h	(revision 13423)
+++ src/lyxtext.h	(working copy)
@@ -21,7 +21,7 @@
 #include "lyxfont.h"
 #include "layout.h"
 #include "lyxlayout_ptr_fwd.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 
 #include <iosfwd>
 
Index: src/undo.h
===================================================================
--- src/undo.h	(revision 13423)
+++ src/undo.h	(working copy)
@@ -17,7 +17,7 @@
 #define UNDO_H
 
 #include "dociterator.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "bufferparams.h"
 
 #include "support/types.h"
Index: src/buffer.h
===================================================================
--- src/buffer.h	(revision 13423)
+++ src/buffer.h	(working copy)
@@ -15,6 +15,7 @@
 #include "InsetList.h"
 
 #include "dociterator.h"
+#include "ParagraphList_fwd.h"
 
 #include "support/limited_stack.h"
 #include "support/types.h"
@@ -42,7 +43,6 @@
 class Language;
 class MacroData;
 class OutputParams;
-class ParagraphList;
 class ParConstIterator;
 class ParIterator;
 class TeXErrors;
Index: src/CutAndPaste.h
===================================================================
--- src/CutAndPaste.h	(revision 13423)
+++ src/CutAndPaste.h	(working copy)
@@ -14,6 +14,8 @@
 #ifndef CUTANDPASTE_H
 #define CUTANDPASTE_H
 
+#include "ParagraphList_fwd.h"
+
 #include "support/types.h"
 
 #include <string>
@@ -23,7 +25,6 @@
 class ErrorList;
 class LyXTextClass;
 class LCursor;
-class ParagraphList;
 
 ///
 namespace lyx {
Index: src/support/RandomAccessList.h
===================================================================
--- src/support/RandomAccessList.h	(revision 0)
+++ src/support/RandomAccessList.h	(revision 0)
@@ -0,0 +1,279 @@
+// -*- C++ -*-
+/**
+ * \file RandomAccessList.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Abdelrazak Younes
+ *
+ * Full author contact details are available in file CREDITS.
+ *
+ */
+
+#ifndef RANDOM_ACESS_LIST_H
+#define RANDOM_ACESS_LIST_H
+
+//#include "debug.h"
+
+#include <boost/utility.hpp>
+
+#include <vector>
+#include <list>
+#include <algorithm>
+
+#define USE_OLD_ITERATOR 1
+
+/// Random Access List.
+/**
+This templatized class provide a std::vector like interface to a
+standard std::list underneath. An important property is that it
+keeps the std::list::iterator interface. A typical use would be:
+
+	typedef RandomAccessList<some_class> MyContainer;
+
+Then you can use MyContainer as if it was a standard 
+std::vector<some_class> for operator[] access and as if it was a
+standard std::list for iterator access. The main difference with
+std::vector is that insertion of elements is much less costly. Compared
+to a standard list alone, there is of course a small overhead because
+the class always keeps its internal vector of iterator (it_vector_) up
+to date.
+*/
+template <class T>
+class RandomAccessList {
+public:
+	// types
+	typedef std::list<T> Container;
+	typedef typename Container::reference reference;
+	typedef typename Container::const_reference const_reference;
+#if USE_OLD_ITERATOR
+	// iterator (below)
+	typedef typename Container::iterator iterator;
+	// const_iterator (below)
+	typedef typename Container::const_iterator const_iterator;
+#else
+	// wip
+#endif
+	typedef typename Container::size_type size_type;
+	typedef typename Container::difference_type difference_type;
+	typedef typename Container::value_type value_type;
+	typedef typename Container::allocator_type allocator_type;
+	typedef typename Container::pointer pointer;
+	typedef typename Container::const_pointer const_pointer;
+	// reverse_iterator
+	// const_reverse_iterator
+
+	typedef std::vector<typename Container::iterator> IterCont;
+
+	// construct/copy/destroy
+
+	RandomAccessList()
+	{}
+
+	// RandomAccessList(size_type n T const & value = T())
+
+	template<class InputIterator>
+	RandomAccessList(InputIterator first, InputIterator last)
+	{
+		assign(first, last);
+	}
+
+
+
+	RandomAccessList(RandomAccessList const & x)
+	{
+		assign(x.begin(), x.end());
+	}
+
+	// ~RandomAccessList()
+
+	///
+	RandomAccessList & operator=(RandomAccessList const & x)
+	{
+		assign(x.begin(), x.end());
+		return *this;
+	}
+
+	template<class InputIterator>
+	void assign(InputIterator first, InputIterator last)
+	{
+		container_.assign(first, last);
+		recreateVector();
+	}
+
+
+	// void assign(size_type n, T const & u);
+
+	// iterators
+
+	iterator begin()
+	{
+		return container_.begin();
+	}
+
+	const_iterator begin() const
+	{
+		return container_.begin();
+	}
+
+	iterator end()
+	{
+		return container_.end();
+	}
+
+	const_iterator end() const
+	{
+		return container_.end();
+	}
+
+	// reverse_iterator rbegin();
+	// const_reverse_iterator rbegin() const;
+	// reverse_iterator rend();
+	// const_reverse_iterator rend() const;
+
+	// capacity
+	size_type size() const
+	{
+		return iterCont_.size();
+	}
+
+	size_type max_size() const
+	{
+		return iterCont_.max_size();
+	}
+
+	// void resize(size_type sz,  T c = T());
+
+	size_type capacity() const
+	{
+		return iterCont_.capacity();
+	}
+
+	bool empty() const
+	{
+		return container_.empty();
+	}
+
+	// void reserve(size_type n);
+
+	// element access
+
+	reference operator[](size_type pos)
+	{
+		return *iterCont_[pos];
+	}
+
+	///
+	const_reference operator[](size_type pos) const
+	{
+		return *iterCont_[pos];
+	}
+
+	reference at(size_type pos)
+	{
+		return *iterCont_.at(pos);
+	}
+
+	const_reference at(size_type pos) const
+	{
+		return *iterCont_.at(pos);
+	}
+
+	reference front()
+	{
+		return container_.front();
+	}
+
+	const_reference front() const
+	{
+		return container_.front();
+	}
+
+	reference back()
+	{
+		return container_.back();
+	}
+
+	const_reference back() const
+	{
+		return container_.back();
+	}
+
+	// modifiers
+
+	void push_back(T const & x)
+	{
+		typename Container::iterator it =
+			container_.insert(container_.end(), x);
+		iterCont_.push_back(it);
+	}
+
+	void pop_back()
+	{
+		container_.pop_back();
+		iterCont_.pop_back();
+	}
+
+	iterator insert(iterator position, T const & x)
+	{
+		typename Container::iterator it =
+			container_.insert(position, x);
+		recreateVector();
+		return it;
+	}
+
+	// void insert(iterator position, size_type n, T const & x);
+
+	template<class InputIterator>
+	void insert(iterator position,
+		    InputIterator first, InputIterator last)
+	{
+		container_.insert(position, first, last);
+		recreateVector();
+	}
+
+	iterator erase(iterator position)
+	{
+		typename Container::iterator it =
+			container_.erase(position);
+		recreateVector();
+		return it;
+	}
+
+	iterator erase(iterator first, iterator last)
+	{
+		typename Container::iterator it =
+			container_.erase(first, last);
+		recreateVector();
+		return it;
+	}
+
+	void swap(RandomAccessList & x)
+	{
+		std::swap(container_, x.container_);
+		std::swap(iterCont_, x.iterCont_);
+	}
+
+	void clear()
+	{
+		container_.clear();
+		iterCont_.clear();
+	}
+
+private:
+	void recreateVector()
+	{
+		iterCont_.clear();
+		typename Container::iterator beg = container_.begin();
+		typename Container::iterator end = container_.end();
+		for (; beg != end; ++beg)
+			iterCont_.push_back(beg);
+	}
+
+	/// Our container.
+	Container container_;
+	/// Our container of iterators.
+	IterCont iterCont_;
+};
+
+#endif
Index: src/paragraph_funcs.C
===================================================================
--- src/paragraph_funcs.C	(revision 13423)
+++ src/paragraph_funcs.C	(working copy)
@@ -96,7 +96,8 @@
 {
 	// create a new paragraph, and insert into the list
 	ParagraphList::iterator tmp =
-		pars.insert(pars.begin() + par_offset + 1, Paragraph());
+		pars.insert(boost::next(pars.begin(), par_offset + 1),
+			    Paragraph());
 
 	Paragraph & par = pars[par_offset];
 
@@ -193,7 +194,8 @@
 	ParagraphList & pars, pit_type par_offset, pos_type pos)
 {
 	// create a new paragraph
-	Paragraph & tmp = *pars.insert(pars.begin() + par_offset + 1, Paragraph());
+	Paragraph & tmp = *pars.insert(boost::next(pars.begin(), par_offset + 1),
+				       Paragraph());
 	Paragraph & par = pars[par_offset];
 
 	if (bparams.tracking_changes)
@@ -259,7 +261,7 @@
 	// Move the change status of "carriage return" over
 	par.setChange(par.size(), cr);
 
-	pars.erase(pars.begin() + par_offset + 1);
+	pars.erase(boost::next(pars.begin(), par_offset + 1));
 }
 
 
Index: src/pariterator.h
===================================================================
--- src/pariterator.h	(revision 13423)
+++ src/pariterator.h	(working copy)
@@ -13,6 +13,7 @@
 #define PARITERATOR_H
 
 #include "dociterator.h"
+#include "ParagraphList_fwd.h"
 
 #include "support/types.h"
 
@@ -24,7 +25,6 @@
 
 class InsetBase;
 class LyXText;
-class ParagraphList;
 
 
 class ParIterator : public std::iterator<std::forward_iterator_tag, Paragraph>,
Index: src/output_linuxdoc.C
===================================================================
--- src/output_linuxdoc.C	(revision 13423)
+++ src/output_linuxdoc.C	(working copy)
@@ -17,7 +17,7 @@
 #include "bufferparams.h"
 #include "paragraph.h"
 #include "paragraph_funcs.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 #include "sgml.h"
 
@@ -133,7 +133,7 @@
 		}
 
 		pit->simpleLinuxDocOnePar(buf, os,
-			outerFont(pit - paragraphs.begin(), paragraphs),
+					  outerFont(std::distance(paragraphs.begin(), pit), paragraphs),
 					  runparams, depth);
 
 		os << "\n";
Index: src/ParagraphList.h
===================================================================
--- src/ParagraphList.h	(revision 0)
+++ src/ParagraphList.h	(revision 0)
@@ -0,0 +1,22 @@
+// -*- C++ -*-
+/**
+ * \file ParagraphList_fwd.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef PARAGRAPH_LIST_H
+#define PARAGRAPH_LIST_H
+
+#include "paragraph.h"
+
+#include "support/RandomAccessList.h"
+
+/// Container for all kind of Paragraphs used in Lyx.
+typedef RandomAccessList<Paragraph> ParagraphList;
+
+#endif
Index: src/paragraph_funcs.h
===================================================================
--- src/paragraph_funcs.h	(revision 13423)
+++ src/paragraph_funcs.h	(working copy)
@@ -12,6 +12,8 @@
 #ifndef PARAGRAPH_FUNCS_H
 #define PARAGRAPH_FUNCS_H
 
+#include "ParagraphList_fwd.h"
+
 #include "support/types.h"
 
 class Buffer;
@@ -19,7 +21,6 @@
 class InsetBase;
 class LyXFont;
 class Paragraph;
-class ParagraphList;
 
 /**
  * This breaks a paragraph at the specified position.
Index: src/output_docbook.C
===================================================================
--- src/output_docbook.C	(revision 13423)
+++ src/output_docbook.C	(working copy)
@@ -20,7 +20,7 @@
 #include "debug.h"
 #include "paragraph.h"
 #include "paragraph_funcs.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 #include "sgml.h"
 
@@ -47,7 +47,7 @@
 ParagraphList::const_iterator searchParagraph(ParagraphList::const_iterator const & par,
 					      ParagraphList::const_iterator const & pend)
 {
-	ParagraphList::const_iterator p = par + 1;
+	ParagraphList::const_iterator p = boost::next(par);
 
 	for( ; p != pend && p->layout()->latextype == LATEX_PARAGRAPH; ++p);
 
@@ -59,7 +59,7 @@
 					    ParagraphList::const_iterator const & pend)
 {
 	LyXLayout_ptr const & bstyle = par->layout();
-	ParagraphList::const_iterator p = par + 1;
+	ParagraphList::const_iterator p = boost::next(par);
 
 	for( ; p != pend; ++p) {
 		LyXLayout_ptr const & style = p->layout();
@@ -74,7 +74,7 @@
 						ParagraphList::const_iterator const & pend)
 {
 	LyXLayout_ptr const & bstyle = par->layout();
-	ParagraphList::const_iterator p = par + 1;
+	ParagraphList::const_iterator p = boost::next(par);
 	for( ; p != pend; ++p) {
 		LyXLayout_ptr const & style = p->layout();
 		if( style->latextype == LATEX_COMMAND)
@@ -108,10 +108,10 @@
 		if (par != pbegin)
 			os << '\n';
 		if (par->layout() == defaultstyle && par->emptyTag()) {
-			par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs));
+			par->simpleDocBookOnePar(buf, os, runparams, outerFont(std::distance(paragraphs.begin(), par), paragraphs));
 		} else {
 			sgml::openTag(buf, os, runparams, *par);
-			par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs));
+			par->simpleDocBookOnePar(buf, os, runparams, outerFont(std::distance(paragraphs.begin(), par), paragraphs));
 			sgml::closeTag(os, *par);
 		}
 	}
@@ -170,7 +170,7 @@
 		case LATEX_ITEM_ENVIRONMENT: {
 			if(par->params().depth() == pbegin->params().depth()) {
 				sgml::openTag(os, wrapper);
-				par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs), sep);
+				par->simpleDocBookOnePar(buf, os, runparams, outerFont(std::distance(paragraphs.begin(), par), paragraphs), sep);
 				sgml::closeTag(os, wrapper);
 				++par;
 			}
@@ -239,7 +239,7 @@
 
 	// Opend inner tag and	close inner tags
 	sgml::openTag(os, bstyle->innertag());
-	par->simpleDocBookOnePar(buf, os, runparams,  outerFont(par - paragraphs.begin(), paragraphs));
+	par->simpleDocBookOnePar(buf, os, runparams,  outerFont(std::distance(paragraphs.begin(), par), paragraphs));
 	sgml::closeTag(os, bstyle->innertag());
 	os << '\n';
 
Index: src/output_linuxdoc.h
===================================================================
--- src/output_linuxdoc.h	(revision 13423)
+++ src/output_linuxdoc.h	(working copy)
@@ -13,10 +13,11 @@
 #ifndef OUTPUT_LINUXDOC_H
 #define OUTPUT_LINUXDOC_H
 
+#include "ParagraphList_fwd.h"
+
 #include <iosfwd>
 
 class Buffer;
-class ParagraphList;
 class OutputParams;
 
 ///
Index: src/output_docbook.h
===================================================================
--- src/output_docbook.h	(revision 13423)
+++ src/output_docbook.h	(working copy)
@@ -13,11 +13,12 @@
 #ifndef OUTPUT_DOCBOOK_H
 #define OUTPUT_DOCBOOK_H
 
+#include "ParagraphList_fwd.h"
+
 #include <iosfwd>
 
 class Buffer;
 class OutputParams;
-class ParagraphList;
 
 ///
 void docbookParagraphs(ParagraphList const & subset,
Index: src/paragraph.C
===================================================================
--- src/paragraph.C	(revision 13423)
+++ src/paragraph.C	(working copy)
@@ -66,10 +66,6 @@
 using std::ostringstream;
 
 
-ParagraphList::ParagraphList()
-{}
-
-
 Paragraph::Paragraph()
 	: begin_of_body_(0), pimpl_(new Paragraph::Pimpl(this))
 {
Index: src/buffer_funcs.C
===================================================================
--- src/buffer_funcs.C	(revision 13423)
+++ src/buffer_funcs.C	(working copy)
@@ -27,7 +27,7 @@
 #include "lyxtextclass.h"
 #include "paragraph.h"
 #include "paragraph_funcs.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 #include "pariterator.h"
 #include "lyxvc.h"
Index: src/text.C
===================================================================
--- src/text.C	(revision 13423)
+++ src/text.C	(working copy)
@@ -1414,8 +1414,8 @@
 	if (type == Change::DELETED) {
 		ParagraphList & plist = paragraphs();
 		if (it.pit() + 1 < et.pit())
-			pars_.erase(plist.begin() + it.pit() + 1,
-				    plist.begin() + et.pit());
+			pars_.erase(boost::next(plist.begin(), it.pit() + 1),
+				    boost::next(plist.begin(), et.pit()));
 		
 		// Paragraph merge if appropriate:
 		if (pars_[it.pit()].lookupChange(pars_[it.pit()].size()) 
@@ -1451,8 +1451,8 @@
 	if (type == Change::INSERTED) {
 		ParagraphList & plist = paragraphs();
 		if (it.pit() + 1 < et.pit())
-			pars_.erase(plist.begin() + it.pit() + 1,
-				    plist.begin() + et.pit());
+			pars_.erase(boost::next(plist.begin(), it.pit() + 1),
+				    boost::next(plist.begin(), et.pit()));
 		// Paragraph merge if appropriate:
 		if (pars_[it.pit()].lookupChange(pars_[it.pit()].size()) 
 			== Change::INSERTED) {
Index: src/output_latex.C
===================================================================
--- src/output_latex.C	(revision 13423)
+++ src/output_latex.C	(working copy)
@@ -333,7 +333,7 @@
 
 	os << everypar;
 	bool need_par = pit->simpleTeXOnePar(buf, bparams,
-			outerFont(pit - paragraphs.begin(), paragraphs),
+					     outerFont(std::distance(paragraphs.begin(), pit), paragraphs),
 					     os, texrow, runparams);
 
 	// Make sure that \\par is done with the font of the last
@@ -346,8 +346,8 @@
 	// We do not need to use to change the font for the last paragraph
 	// or for a command.
 	LyXFont const outerfont =
-			outerFont(pit - paragraphs.begin(),
-paragraphs);
+		outerFont(std::distance(paragraphs.begin(), pit),
+			  paragraphs);
 
 	LyXFont const font =
 		(pit->empty()
-- 
        Lgb

Reply via email to