Skip to content
Snippets Groups Projects
Commit 45223263 authored by Jorrit Fahlke's avatar Jorrit Fahlke
Browse files

Check that iterator<T> can be compared with iterator<const T> as soon as a

conversion from iterator<T> to iterator<const T> exists (currently fails)

[[Imported from SVN: r5673]]
parent 25ba1ebb
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
# $Id$
TESTPROGS = parsetest test-stack arraylisttest smartpointertest \
sllisttest iteratorfacadetest tuplestest fvectortest fmatrixtest \
sllisttest iteratorfacadetest iteratorfacadetest2 tuplestest fvectortest fmatrixtest \
poolallocatortest settest gcdlcmtest streamtest \
bigunsignedinttest mpihelpertest singletontest mpicollcomm \
utilitytest lrutest \
......@@ -38,6 +38,8 @@ XFAIL_TESTS = testfassign_fail1 testfassign_fail2 testfassign_fail3 \
# programs just to build when "make check" is used
check_PROGRAMS = $(TESTPROGS)
noinst_HEADERS = dummyiterator.hh
AM_LDFLAGS = $(LOCAL_LIBS)
# define the programs
......@@ -75,6 +77,8 @@ streamtest_SOURCES = streamtest.cc
iteratorfacadetest_SOURCES = iteratorfacadetest.cc iteratorfacadetest.hh \
iteratortest.hh
iteratorfacadetest2_SOURCES = iteratorfacadetest2.cc
fvectortest_SOURCES = fvectortest.cc
fmatrixtest_SOURCES = fmatrixtest.cc
......
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
#ifndef DUNE_COMMON_DUMMYITERATOR_HH
#define DUNE_COMMON_DUMMYITERATOR_HH
#include <cstddef>
#include <dune/common/iteratorfacades.hh>
#include <dune/common/typetraits.hh>
template<typename T>
class dummyiterator
: public Dune::BidirectionalIteratorFacade<dummyiterator<T>, T, T&,
std::ptrdiff_t>
{
friend class dummyiterator<const typename Dune::remove_const<T>::type>;
T *value;
public:
dummyiterator(T& value_)
: value(&value_)
{}
template<typename T2>
dummyiterator
( const dummyiterator<T2>& o,
typename Dune::enable_if<Dune::Conversion<T2&, T&>::exists>::type* = 0)
: value(o.value)
{}
T& derefence() const {
return *value;
}
bool equals(const dummyiterator& o) const {
return value == o.value;
}
void increment() {}
void decrement() {}
};
#endif // DUNE_COMMON_DUMMYITERATOR_HH
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "dummyiterator.hh"
int main(){
// Check that iterator<T> can be compared with iterator<const T> as soon as
// a conversion from iterator<T> to iterator<const T> exists
int value = 0;
dummyiterator<int> mit(value);
dummyiterator<const int> cit(value);
bool result = mit == cit;
if(result) return 0;
else return 1;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment