|
|
Home » U++ Library support » U++ Core » stl-compatibility
Re: stl-compatibility [message #39674 is a reply to message #39649] |
Tue, 16 April 2013 20:11 |
piotr5
Messages: 107 Registered: November 2005
|
Experienced Member |
|
|
I instantiated a class making use of each container's stl-compatibility to check what containers can be used. what I found is:
testIterContainers<Vector<V> >();
testIterContainers<Array<V> >();
/*no conversion from iterator to const_iterator*/ // testIterContainers<Segtor<V> >();
// testIterContainers<Index<V> >();
// testIterContainers<ArrayIndex<V> >();
testIterContainers<VectorMap<int,V> >();
testIterContainers<ArrayMap<int,V> >();
/*no conversion from iterator to const_iterator*/ // testIterContainers<SegtorMap<int,V> >();
// testIterContainers<One<V> >();
// testIterContainers<Buffer<V> >();
// testIterContainers<Mitor<V> >();
// testIterContainers<LinkElement<V> >();
// testIterContainers<LRUCache<V> >();
testIterContainers<InVector<V> >();
/*no operator=(ConstIterator) for InArray*/ // testIterContainers<InArray<V> >();
// testIterContainers<SortedIndex<V> >();
testIterContainers<SortedVectorMap<int,V> >();
/*no operator=(ConstIterator) for InArray*/ // testIterContainers<SortedArrayMap<int,V> >();
/*no conversion from iterator to const_iterator*/ // testIterContainers<BiVector<V> >();
/*no conversion from iterator to const_iterator*/ // testIterContainers<BiArray<V> >();
the containers I used all at least instantiate and return an iterator, the containers I commented out have no stl-compatibility. additional comments are talking of 2 compilation-problems: InArray delegates SetEnd to InVector resulting in
/home/p/upp/uppsrc/Core/InVector.hpp: In member function ‘void Upp::InArray<T>::SetEnd(Upp::InArray<T>::ConstIterator&) const [with T = Upp::Vector<in
t>]’:
/home/p/upp/uppsrc/Core/InVector.h:332:65: instantiated from ‘Upp::InArray<T>::Iterator Upp::InArray<T>::End() [with T = Upp::Vector<int>]’
/home/p/upp/uppsrc/Core/InVector.h:345:2: instantiated from ‘Upp::InArray<T>::iterator Upp::InArray<T>::end() [with T = Upp::Vector<int>, Upp::InArr
ay<T>::iterator = Upp::InArray<Upp::Vector<int> >::Iterator]’
/home/p/MyApps/stlpp/stlpp.h:532:53: instantiated from ‘TrueIterContainer<C>::TrueIterContainer(C2&) [with C2 = Upp::InArray<Upp::Vector<int> >, C =
Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:17:27: instantiated from ‘void testIterContainers() [with C = Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:40:46: instantiated from ‘void test() [with V = Upp::Vector<int>]’
/home/p/MyApps/stlppTest/stlppTest.cpp:50:21: instantiated from here
/home/p/upp/uppsrc/Core/InVector.hpp:755:2: error: no match for ‘operator=’ in ‘it.Upp::InArray<Upp::Vector<int> >::ConstIterator::it = ((const Upp::I
nArray<Upp::Vector<int> >*)this)->Upp::InArray<Upp::Vector<int> >::iv.Upp::InVector<T>::End [with T = Upp::Vector<int>*]()’
/home/p/upp/uppsrc/Core/InVector.hpp:755:2: note: candidate is:
/home/p/upp/uppsrc/Core/InVector.h:200:20: note: Upp::InVector<Upp::Vector<int>*>::Iterator& Upp::InVector<Upp::Vector<int>*>::Iterator::operator=(con
st Upp::InVector<Upp::Vector<int>*>::Iterator&)
/home/p/upp/uppsrc/Core/InVector.h:200:20: note: no known conversion for argument 1 from ‘Upp::InVector<Upp::Vector<int>*>::ConstIterator’ to ‘const
Upp::InVector<Upp::Vector<int>*>::Iterator&’
/home/p/upp/uppsrc/Core/InVector.hpp: In member function ‘void Upp::InArray<T>::SetBegin(Upp::InArray<T>::ConstIterator&) const [with T = Upp::Vector<
int>]’:
/home/p/upp/uppsrc/Core/InVector.h:331:65: instantiated from ‘Upp::InArray<T>::Iterator Upp::InArray<T>::Begin() [with T = Upp::Vector<int>]’
/home/p/upp/uppsrc/Core/InVector.h:345:2: instantiated from ‘Upp::InArray<T>::iterator Upp::InArray<T>::begin() [with T = Upp::Vector<int>, Upp::InA
rray<T>::iterator = Upp::InArray<Upp::Vector<int> >::Iterator]’
/home/p/MyApps/stlpp/stlpp.h:532:53: instantiated from ‘TrueIterContainer<C>::TrueIterContainer(C2&) [with C2 = Upp::InArray<Upp::Vector<int> >, C =
Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:17:27: instantiated from ‘void testIterContainers() [with C = Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:40:46: instantiated from ‘void test() [with V = Upp::Vector<int>]’
/home/p/MyApps/stlppTest/stlppTest.cpp:50:21: instantiated from here
/home/p/upp/uppsrc/Core/InVector.hpp:749:2: error: no match for ‘operator=’ in ‘it.Upp::InArray<Upp::Vector<int> >::ConstIterator::it = ((const Upp::I
nArray<Upp::Vector<int> >*)this)->Upp::InArray<Upp::Vector<int> >::iv.Upp::InVector<T>::Begin [with T = Upp::Vector<int>*]()’
/home/p/upp/uppsrc/Core/InVector.hpp:749:2: note: candidate is:
/home/p/upp/uppsrc/Core/InVector.h:200:20: note: Upp::InVector<Upp::Vector<int>*>::Iterator& Upp::InVector<Upp::Vector<int>*>::Iterator::operator=(con
st Upp::InVector<Upp::Vector<int>*>::Iterator&)
/home/p/upp/uppsrc/Core/InVector.h:200:20: note: no known conversion for argument 1 from ‘Upp::InVector<Upp::Vector<int>*>::ConstIterator’ to ‘const
Upp::InVector<Upp::Vector<int>*>::Iterator&’
stlppTest: 1 file(s) built in (0:05.84), 5848 msecs / file, duration = 5855 msecs, parallelization 0%
minimal testing program is
struct InArrayDebug
{
InArray<int> c;
InArray<int>::ConstIterator end() const {return c.end();}
InArray<int>::ConstIterator begin() const {return c.begin();}
};
the problem with segtor is
/home/p/MyApps/stlpp/stlpp.h:75:2: note: no known conversion for argument 2 from ‘Upp::Segtor<Upp::Vector<int>, 16>::iterator {aka Upp::IIterator<Up
p::Segtor<Upp::Vector<int>, 16> >}’ to ‘Upp::ConstIIterator<Upp::Segtor<Upp::Vector<int>, 16> >’
please note, I haven't updated svn yet,
returns 5977 as the revision number on googlecode.
[Updated on: Tue, 16 April 2013 20:47] Report message to a moderator
|
|
|
Goto Forum:
Current Time: Sat May 18 02:25:04 CEST 2024
Total time taken to generate the page: 0.05064 seconds
|
|
|