Dave, I am posting the diffs from 1.29.0 plus the test and doc files. Sorry for the delay. I hope you won't have problems applying the diffs. Nikolay 44a45,52
keywords<size+1> operator , (const keywords<1> &k) const { python::detail::keywords<size+1> res; std::copy(elements, elements+size, res.elements); res.elements[size] = k.elements[0]; return res; } keywords<size+1> operator , (const char *name) const;
46a55,57
97a109,129
struct arg : detail::keywords<1> { template <class T> arg &operator = (T const &value) { elements[0].default_value = handle<>(python::borrowed(object(value).ptr())); return *this; } explicit arg (char const *name){elements[0].name = name;} operator detail::keyword const &()const {return elements[0];} };
namespace detail { template <std::size_t nkeywords> inline keywords< keywords<nkeywords>::size+1 > keywords<nkeywords>::operator , (const char *name) const { return this->operator , (arg(name)); } }
21a22
keyword(char const* n=0):name(n){}
57a58
unsigned m_nkeyword_values;
35a36
, m_nkeyword_values(0)
42d42 < 48a49,52
object tpl (handle<>( PyTuple_New(names_and_defaults[i].default_value ? 2 : 1) ));
50,51c54,55 < m_arg_names.ptr() < , i + keyword_offset ---
tpl.ptr() , 0
55a60,77
if(names_and_defaults[i].default_value) { PyTuple_SET_ITEM( tpl.ptr() , 1 , incref(names_and_defaults[i].default_value.get()) );
++m_nkeyword_values; }
PyTuple_SET_ITEM( m_arg_names.ptr() , i + keyword_offset , incref(tpl.ptr()) );
82c104 < if (total_args >= f->m_min_arity && total_args <= f->m_max_arity) ---
if (total_args + f->m_nkeyword_values >= f->m_min_arity && total_args <= f->m_max_arity)
85c107 < if (nkeywords > 0) ---
if (nkeywords > 0 || total_args < f->m_min_arity)
94,95c116,117 < // build a new arg tuple < args2 = handle<>(PyTuple_New(total_args)); ---
// build a new arg tuple, will adjust its size later args2 = handle<>(PyTuple_New(f->m_max_arity));
102c124,128 < for (std::size_t j = nargs; j < total_args; ++j) ---
std::size_t j = nargs; std::size_t k = nargs; std::size_t size = PyTuple_GET_SIZE(f->m_arg_names.ptr());
for (; j < f->m_max_arity && j < size ; ++j)
104,105c130,138 < PyObject* value = PyDict_GetItem( < keywords, PyTuple_GET_ITEM(f->m_arg_names.ptr(), j)); ---
PyObject* kwd = PyTuple_GET_ITEM(f->m_arg_names.ptr(), j);
PyObject* value = nkeywords ? PyDict_GetItem( keywords, PyTuple_GET_ITEM(kwd, 0)) : 0;
if (!value) { if (PyTuple_GET_SIZE(kwd) > 1) value = PyTuple_GET_ITEM(kwd, 1);
113c146,170 < PyTuple_SET_ITEM(args2.get(), j, incref(value)); ---
}else ++k;
PyTuple_SET_ITEM(args2.get(), j, incref(value) ); }
if (args2.get()) { //check if we proccessed all the arguments if(k < total_args) args2 = handle<>();
//adjust the parameter tuple size if(j<f->m_max_arity) { handle<> args3( PyTuple_New(j) );
for (size_t l = 0; l != j; ++ l) { PyTuple_SET_ITEM(args3.get(), l, PyTuple_GET_ITEM(args3.get(), l) ); PyTuple_SET_ITEM(args2.get(), l, 0); } args2 = args3; }
'''
from keywords import * f = Foo() f.a(), f.b(), f.n() (0, 0.0, '') f = Foo(1) f.a(), f.b(), f.n() (1, 0.0, '') f = Foo(1,1.0) f.a(), f.b(), f.n() (1, 1.0, '') f = Foo(1,1.0,"1") f.a(), f.b(), f.n() (1, 1.0, '1') f = Foo(a=1) f.a(), f.b(), f.n() (1, 0.0, '') f = Foo(b=1) f.a(), f.b(), f.n() (0, 1.0, '') f = Foo(n="1") f.a(), f.b(), f.n() (0, 0.0, '1') f = Foo(1,n="1") f.a(), f.b(), f.n() (1, 0.0, '1') f.set() f.a(), f.b(), f.n() (0, 0.0, '') f.set(1) f.a(), f.b(), f.n() (1, 0.0, '') f.set(1,1.0) f.a(), f.b(), f.n() (1, 1.0, '') f.set(1,1.0,"1") f.a(), f.b(), f.n() (1, 1.0, '1') f.set(a=1) f.a(), f.b(), f.n() (1, 0.0, '') f.set(b=1) f.a(), f.b(), f.n() (0, 1.0, '') f.set(n="1") f.a(), f.b(), f.n() (0, 0.0, '1') f.set(1,n="1") f.a(), f.b(), f.n() (1, 0.0, '1') '''
def run(args = None): import sys import doctest if args is not None: sys.argv = args return doctest.testmod(sys.modules.get(__name__)) if __name__ == '__main__': print "running..." import sys sys.exit(run()[0])
Nikolay Mladenov <nickm@sitius.com> writes:
Dave,
I am posting the diffs from 1.29.0 plus the test and doc files. Sorry for the delay. I hope you won't have problems applying the diffs.
Hmm, it seems likely that I will. 1.29.0 is two releases old and we have made a lot of changes since then. Is there any chance you can give me a patch against the current CVS state? -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
Dave,
I am posting the diffs from 1.29.0 plus the test and doc files. Sorry for the delay. I hope you won't have problems applying the diffs.
Hmm, it seems likely that I will. 1.29.0 is two releases old and we have made a lot of changes since then.
I noticed.
Is there any chance you can give me a patch against the current CVS state?
I can't get the cvs commands to work for me: $ cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost login (Logging in to anonymous@cvs.boost.sourceforge.net) CVS password: cvs [login aborted]: recv() from server cvs.boost.sourceforge.net: EOF This is what I always get back from the cvs. Do you know what is wrong with my cvs line?
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Nikolay Mladenov <nickm@sitius.com> writes:
David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
Dave,
I am posting the diffs from 1.29.0 plus the test and doc files. Sorry for the delay. I hope you won't have problems applying the diffs.
Hmm, it seems likely that I will. 1.29.0 is two releases old and we have made a lot of changes since then.
I noticed.
Is there any chance you can give me a patch against the current CVS state?
I can't get the cvs commands to work for me: $ cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost login (Logging in to anonymous@cvs.boost.sourceforge.net) CVS password: cvs [login aborted]: recv() from server cvs.boost.sourceforge.net: EOF
This is what I always get back from the cvs. Do you know what is wrong with my cvs line?
Nothing; SF cvs is just really bad for anonymous CVS (until next month, when they promise it will be fixed). I use this little python script to do all my anonymous SF CVS: #!/bin/python # cvsx script - tries CVS commands until they succeed. import sys import os while os.system('cvs ' + ' '.join(sys.argv[1:])): print '.', sys.stdout.flush() -- Dave Abrahams Boost Consulting www.boost-consulting.com
This is insane. I was just pressing enter for 10 minutes trying to login. Can you set up a real read-only account(if it is going to help)? Is there any other "nice" way to get good diffs agains the current cvs state? Nick David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
Dave,
I am posting the diffs from 1.29.0 plus the test and doc files. Sorry for the delay. I hope you won't have problems applying the diffs.
Hmm, it seems likely that I will. 1.29.0 is two releases old and we have made a lot of changes since then.
I noticed.
Is there any chance you can give me a patch against the current CVS state?
I can't get the cvs commands to work for me: $ cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost login (Logging in to anonymous@cvs.boost.sourceforge.net) CVS password: cvs [login aborted]: recv() from server cvs.boost.sourceforge.net: EOF
This is what I always get back from the cvs. Do you know what is wrong with my cvs line?
Nothing; SF cvs is just really bad for anonymous CVS (until next month, when they promise it will be fixed). I use this little python script to do all my anonymous SF CVS:
#!/bin/python # cvsx script - tries CVS commands until they succeed. import sys import os while os.system('cvs ' + ' '.join(sys.argv[1:])): print '.', sys.stdout.flush()
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Nikolay Mladenov <nickm@sitius.com> writes:
This is insane. I was just pressing enter for 10 minutes trying to login. Can you set up a real read-only account(if it is going to help)? Is there any other "nice" way to get good diffs agains the current cvs state?
You can download the entire nightly CVS tarball here: http://cvs.sourceforge.net/cvstarballs/boost-cvsroot.tar.gz :( -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams <dave@boost-consulting.com> writes:
Nikolay Mladenov <nickm@sitius.com> writes:
This is insane. I was just pressing enter for 10 minutes trying to login. Can you set up a real read-only account(if it is going to help)? Is there any other "nice" way to get good diffs agains the current cvs state?
You can download the entire nightly CVS tarball here:
or http://www.boost-consulting.com/boost-cvsroot.tar.gz :( -- Dave Abrahams Boost Consulting www.boost-consulting.com
I got it. But ... There are lots of conflicts, so some work must be done again. David Abrahams wrote:
David Abrahams <dave@boost-consulting.com> writes:
Nikolay Mladenov <nickm@sitius.com> writes:
This is insane. I was just pressing enter for 10 minutes trying to login. Can you set up a real read-only account(if it is going to help)? Is there any other "nice" way to get good diffs agains the current cvs state?
You can download the entire nightly CVS tarball here:
or http://www.boost-consulting.com/boost-cvsroot.tar.gz
:(
-- Dave Abrahams Boost Consulting www.boost-consulting.com
,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Li st_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property
,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc _impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Li st_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc _impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_itera tor<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_ Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<st ruct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_iterator.hpp(69) : see reference to class template instantiation 'boost::detail::iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_i terator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _ST L::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_imp l<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2110) : see reference to class template instantiation 'boost::adjacency_iterator_generator<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidir ectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_prop erty,struct boost::listS>,unsigned int,struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct bo ost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned i nt,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous na mespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2146: syntax error : missing ';' before identifier 'difference_type' D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Li st_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc _impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Li st_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc _impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_itera tor<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_ Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<st ruct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_iterator.hpp(69) : see reference to class template instantiation 'boost::detail::iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_i terator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _ST L::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_imp l<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2110) : see reference to class template instantiation 'boost::adjacency_iterator_generator<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidir ectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_prop erty,struct boost::listS>,unsigned int,struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct bo ost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned i nt,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous na mespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2868: 'difference_type' : illegal syntax for using-declaration; expected qualified-name D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Li st_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc _impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Li st_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc _impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_itera tor<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_ Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<st ruct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_iterator.hpp(69) : see reference to class template instantiation 'boost::detail::iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_i terator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _ST L::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_imp l<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2110) : see reference to class template instantiation 'boost::adjacency_iterator_generator<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidir ectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_prop erty,struct boost::listS>,unsigned int,struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct bo ost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned i nt,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous na mespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2039: 'distance_type' : is not a member of 'iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_e dge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct b oost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::property <enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirectiona l_tag,unsigned int>,int> >' D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List _iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _ STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_i mpl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterat or<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_N onconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<str uct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_iterator.hpp(98) : see reference to class template instantiation 'boost::detail::iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_it erator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL ::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl <struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2122) : see reference to class template instantiation 'boost::inv_adjacency_iterator_generator<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::b idirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_
,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_i mpl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterat or<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_N onconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<str uct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_iterator.hpp(98) : see reference to class template instantiation 'boost::detail::iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_it erator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL ::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl <struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2122) : see reference to class template instantiation 'boost::inv_adjacency_iterator_generator<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::b idirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_
,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_i mpl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_ impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterat or<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_N onconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<str uct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_iterator.hpp(98) : see reference to class template instantiation 'boost::detail::iterator_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_it erator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL ::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > ,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl <struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2122) : see reference to class template instantiation 'boost::inv_adjacency_iterator_generator<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::b idirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_
Dave, I think I have all the conflicts resolved, but my build failed. Can you help me out (MSVC 6.0 - STLPort 4.5.3)? Nick --------------------Configuration: boost_python - Win32 Debug-------------------- Compiling... inheritance.cpp D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\../include/new(35) : warning C4290: C++ Exception Specification ignored D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2039: 'distance_type' : is not a member of 'iterator_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_ edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::propert y<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirection al_tag,unsigned int>,int> >' D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct boost::detail::out_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_Lis t_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> property,struct boost::listS>,unsigned int,struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigne d int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2146: syntax error : missing ';' before identifier 'difference_type' D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List _iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _ STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> property,struct boost::listS>,unsigned int,struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigne d int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2868: 'difference_type' : illegal syntax for using-declaration; expected qualified-name D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List _iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _ STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> property,struct boost::listS>,unsigned int,struct boost::detail::in_edge_iter<class boost::detail::sei_<unsigned int,struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigne d int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > >,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > *,unsigned int,class boost::detail::edge_desc_impl<struct boost::bidirectional_tag,unsigned int>,int> >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2039: 'distance_type' : is not a member of 'iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index _t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::p roperty<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enu m boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost:: property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enu m boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost:: property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost: :edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property <enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2127) : see reference to class template instantiation 'boost::detail::iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<en um boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost: :property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2146: syntax error : missing ';' before identifier 'difference_type' D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::p roperty<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enu m boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost:: property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enu m boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost:: property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost: :edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property <enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2127) : see reference to class template instantiation 'boost::detail::iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<en um boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost: :property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(294) : error C2868: 'difference_type' : illegal syntax for using-declaration; expected qualified-name D:\Shared Projects\a\boost\boost/detail/iterator.hpp(336) : see reference to class template instantiation 'boost::detail::msvc_stdlib_mutable_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::p roperty<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(357) : see reference to class template instantiation 'boost::detail::msvc_stdlib_iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enu m boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost:: property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(367) : see reference to class template instantiation 'boost::detail::non_pointer_iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enu m boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost:: property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/detail/iterator.hpp(387) : see reference to class template instantiation 'boost::detail::iterator_traits_aux<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<enum boost: :edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost::property <enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/graph/detail/adjacency_list.hpp(2127) : see reference to class template instantiation 'boost::detail::iterator_traits<struct _STL::_List_iterator<struct boost::list_edge<unsigned int,struct boost::property<en um boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > >,struct _STL::_Nonconst_traits<struct boost::list_edge<unsigned int,struct boost: :property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> > > > > >' being compiled D:\Shared Projects\a\boost\boost/graph/adjacency_list.hpp(314) : see reference to class template instantiation 'boost::detail::adj_list_gen<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boos t::listS>,struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl *)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled D:\Shared Projects\a\boost\libs\python\src\object\inheritance.cpp(75) : see reference to class template instantiation 'boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::no_property,struct boost::property<enum boost::edge_index_t,unsigned int,struct boost::property<enum boost::`anonymous namespace'::edge_cast_t,void * (__cdecl*)(void *),struct no_property::no_property> >,struct boost::no_property,struct boost::listS>' being compiled Error executing cl.exe. Creating browse info file... boost_python.dll - 9 error(s), 1 warning(s)
Nikolay Mladenov <nickm@sitius.com> writes:
Dave,
I think I have all the conflicts resolved, but my build failed. Can you help me out (MSVC 6.0 - STLPort 4.5.3)?
Use Boost.Build and install the service packs? Works for me with MSVC 6.5 and STLPort 4.5.3 -- Dave Abrahams Boost Consulting www.boost-consulting.com
Interestingly the difference in the cl.exe options that leads to the errors is /vmg (use general purpose pointer-to-members) I need to use this option im my projects, but I will test the args patch without it. Can the /vmg problem be resolved in some way? Nick David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
Dave,
I think I have all the conflicts resolved, but my build failed. Can you help me out (MSVC 6.0 - STLPort 4.5.3)?
Use Boost.Build and install the service packs? Works for me with MSVC 6.5 and STLPort 4.5.3 -- Dave Abrahams Boost Consulting www.boost-consulting.com
Nikolay Mladenov <nickm@sitius.com> writes:
Interestingly the difference in the cl.exe options that leads to the errors is /vmg (use general purpose pointer-to-members) I need to use this option im my projects, but I will test the args patch without it. Can the /vmg problem be resolved in some way?
If you reduce the problem to a small test case I may be able to find a workaround. That's all I can think of. -- Dave Abrahams Boost Consulting www.boost-consulting.com
Nikolay Mladenov <nickm@sitius.com> writes:
Interestingly the difference in the cl.exe options that leads to the errors is /vmg (use general purpose pointer-to-members) I need to use this option im my projects, but I will test the args patch without it. Can the /vmg problem be resolved in some way?
Hmm, I can't even get the embedding test to compile with that switch in the existing codebase. I have no clue. As far as I can tell the /vmg feature was completely broken for vc6 and vc7. They seem to have fixed it for vc7.1. You might see if you can make something useful out of: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm... Good luck, Dave -- Dave Abrahams Boost Consulting www.boost-consulting.com
I can't get boost_python to compile with this swich, and I have 1.29.0 compiled with it. The problem is that one generally shouldn't mix binaries compiled with different pointer_to_member option and we have everiting built with /vmg which acording to the ms docs is the safest, since all the pointer-to-members have the same "sizeof". Can the problem be that some "trait" switches because of the sizeof(pointer_to_member)? Nikolay David Abrahams wrote:
Nikolay Mladenov ?nickm@sitius.com? writes:
? Interestingly the difference in the cl.exe options that leads ? to the errors is /vmg (use general purpose pointer-to-members) ? I need to use this option im my projects, but I will test the args patch ? without it. ? Can the /vmg problem be resolved in some way?
Hmm, I can't even get the embedding test to compile with that switch in the existing codebase. I have no clue.
As far as I can tell the /vmg feature was completely broken for vc6 and vc7. They seem to have fixed it for vc7.1.
You might see if you can make something useful out of:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm...
Good luck, Dave -- Dave Abrahams Boost Consulting www.boost-consulting.com
Nikolay Mladenov <nickm@sitius.com> writes:
I can't get boost_python to compile with this swich, and I have 1.29.0 compiled with it.
You're saying Boost.Python 1.29.0 used to compile with /vmg?
The problem is that one generally shouldn't mix binaries compiled with different pointer_to_member option and we have everiting built with /vmg which acording to the ms docs is the safest, since all the pointer-to-members have the same "sizeof". Can the problem be that some "trait" switches because of the sizeof(pointer_to_member)?
I seriously doubt it. This code is designed to be portable and agnostic to how the compiler represents member pointers. The errors we see are all of the form: "error C2039: 'member_name' : is not a member of 'some_template<instantiation>'" But if you look at the definition of 'some_template<instantiation>', the member is certainly there. This is compiler insanity, plain and simple. If indeed it used to compile, all I can suggest is that you do what I did this morning: a binary search through time for the CVS change which caused /vmg to start failing. Tedious but effective. -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams wrote:
Nikolay Mladenov ?nickm@sitius.com? writes:
? I can't get boost_python to compile with this swich, and I have ? 1.29.0 compiled with it.
You're saying Boost.Python 1.29.0 used to compile with /vmg?
Yes. Without a problem.
This is compiler insanity, plain and simple.
I can easily believe that:). Though the error seems to come from some msvc workaround code.
If indeed it used to compile, all I can suggest is that you do what I did this morning: a binary search through time for the CVS change which caused /vmg to start failing. Tedious but effective.
Okey, I 'll try that.
The change that breaks it has happened between Feb 06 2003 and Feb 07 2003 and as far as I can tell it comes from: mpl/aux_/has_xxx.hpp around line 79 the definition of struct msvc_is_incomplete and than detail/iterator.hpp around line 83 What do you think, can it be fixed? Nikolay Nikolay Mladenov wrote:
David Abrahams wrote:
Nikolay Mladenov ?nickm@sitius.com? writes:
? I can't get boost_python to compile with this swich, and I have ? 1.29.0 compiled with it.
You're saying Boost.Python 1.29.0 used to compile with /vmg?
Yes. Without a problem.
This is compiler insanity, plain and simple.
I can easily believe that:). Though the error seems to come from some msvc workaround code.
If indeed it used to compile, all I can suggest is that you do what I did this morning: a binary search through time for the CVS change which caused /vmg to start failing. Tedious but effective.
Okey, I 'll try that.
Nikolay Mladenov <nickm@sitius.com> writes:
The change that breaks it has happened between Feb 06 2003 and Feb 07 2003 and as far as I can tell it comes from: mpl/aux_/has_xxx.hpp around line 79 the definition of struct msvc_is_incomplete and than detail/iterator.hpp around line 83 What do you think, can it be fixed?
Maybe. Can you figure out which of these two changes is responsible for your problem? I'm pretty sure it's has_xxx.hpp, but I'd like to know for sure. -- Dave Abrahams Boost Consulting www.boost-consulting.com
Nikolay Mladenov <nickm@sitius.com> writes:
The change that breaks it has happened between Feb 06 2003 and Feb 07 2003 and as far as I can tell it comes from: mpl/aux_/has_xxx.hpp around line 79 the definition of struct msvc_is_incomplete and than detail/iterator.hpp around line 83 What do you think, can it be fixed?
Hmm, it looks like /vmg has to completely break that msvc_is_incomplete template: template< typename T > struct msvc_is_incomplete { struct incomplete_; BOOST_STATIC_CONSTANT(bool, value = sizeof(void (T::*)()) == sizeof(void (incomplete_::*)()) ); }; I think msvc_is_incomplete<T>::value would always be true. -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
The change that breaks it has happened between Feb 06 2003 and Feb 07 2003 and as far as I can tell it comes from: mpl/aux_/has_xxx.hpp around line 79 the definition of struct msvc_is_incomplete and than detail/iterator.hpp around line 83 What do you think, can it be fixed?
Hmm, it looks like /vmg has to completely break that msvc_is_incomplete template:
template< typename T > struct msvc_is_incomplete { struct incomplete_; BOOST_STATIC_CONSTANT(bool, value = sizeof(void (T::*)()) == sizeof(void (incomplete_::*)()) ); };
I think msvc_is_incomplete<T>::value would always be true.
Yeah. Unfortunately, that's the only way I know to implement 'has_xxx' on MSVC so that it doesn't bark on incomplete types, and there is some code around which relies on it. On the other hand, Boost.Python probably doesn't depend on it, and since '/vmg' is not the default option, what we _can_ do is to guard the 'is_incomplete' check with something like BOOST_MPL_AUX_HAS_XXX_MSVC_NO_IS_INCOMPLETE and ask to define the symbol when compiling with '/vmg' or '#pragma pointers_to_members(full_generality, ...)'. If that sounds like a reasonable compromise - in particular, to Nikolay - please feel free to implement it. Aleksey
Aleksey Gurtovoy <agurtovoy@meta-comm.com> writes:
David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
The change that breaks it has happened between Feb 06 2003 and Feb 07 2003 and as far as I can tell it comes from: mpl/aux_/has_xxx.hpp around line 79 the definition of struct msvc_is_incomplete and than detail/iterator.hpp around line 83 What do you think, can it be fixed?
Hmm, it looks like /vmg has to completely break that msvc_is_incomplete template:
template< typename T > struct msvc_is_incomplete { struct incomplete_; BOOST_STATIC_CONSTANT(bool, value = sizeof(void (T::*)()) == sizeof(void (incomplete_::*)()) ); };
I think msvc_is_incomplete<T>::value would always be true.
Yeah. Unfortunately, that's the only way I know to implement 'has_xxx' on MSVC so that it doesn't bark on incomplete types, and there is some code around which relies on it.
It seems to me that it can't know the answer for incomplete types, and therefore it shouldn't produce one - it should be an error. How does the conforming version manage it?
On the other hand, Boost.Python probably doesn't depend on it
Right.
and since '/vmg' is not the default option, what we _can_ do is to guard the 'is_incomplete' check with something like BOOST_MPL_AUX_HAS_XXX_MSVC_NO_IS_INCOMPLETE and ask to define the symbol when compiling with '/vmg' or '#pragma pointers_to_members(full_generality, ..)'.
Sounds like a plan.
If that sounds like a reasonable compromise - in particular, to Nikolay - please feel free to implement it.
Nikolay, let me know what you think. -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams wrote:
I think msvc_is_incomplete<T>::value would always be true.
Yeah. Unfortunately, that's the only way I know to implement 'has_xxx' on MSVC so that it doesn't bark on incomplete types, and there is some code around which relies on it.
It seems to me that it can't know the answer for incomplete types, and therefore it shouldn't produce one - it should be an error.
We don't really want that. Consider: #include <iosfwd> // ... typedef find_if< types, is_same<_1,std::iostream> >::type r; // error?
How does the conforming version manage it?
SFINAE-based version just works ('has_xxx' returns 'false'). Aleksey
Aleksey Gurtovoy <agurtovoy@meta-comm.com> writes:
David Abrahams wrote:
I think msvc_is_incomplete<T>::value would always be true.
Yeah. Unfortunately, that's the only way I know to implement 'has_xxx' on MSVC so that it doesn't bark on incomplete types, and there is some code around which relies on it.
It seems to me that it can't know the answer for incomplete types, and therefore it shouldn't produce one - it should be an error.
We don't really want that. Consider:
#include <iosfwd>
// ... typedef find_if< types, is_same<_1,std::iostream> >::type r; // error?
How does the conforming version manage it?
SFINAE-based version just works ('has_xxx' returns 'false').
So does my fix ;-> -- Dave Abrahams Boost Consulting www.boost-consulting.com
Aleksey Gurtovoy <agurtovoy@meta-comm.com> writes:
I think msvc_is_incomplete<T>::value would always be true.
Yeah. Unfortunately, that's the only way I know to implement 'has_xxx' on MSVC so that it doesn't bark on incomplete types, and there is some code around which relies on it. On the other hand, Boost.Python probably doesn't depend on it, and since '/vmg' is not the default option, what we _can_ do is to guard the 'is_incomplete' check with something like BOOST_MPL_AUX_HAS_XXX_MSVC_NO_IS_INCOMPLETE and ask to define the symbol when compiling with '/vmg' or '#pragma pointers_to_members(full_generality, ...)'.
If that sounds like a reasonable compromise - in particular, to Nikolay - please feel free to implement it.
I did you one better. Now it just works with no BOOST_MPL_AUX_HAS_XXX_MSVC_NO_IS_INCOMPLETE switches required from the user: --- has_xxx.hpp 8 Jul 2003 05:10:02 -0000 1.16 +++ has_xxx.hpp 2 Aug 2003 15:58:44 -0000 1.17 @@ -3,8 +3,8 @@ // See http://www.boost.org for updates, documentation, and revision history. //----------------------------------------------------------------------------- // -// Copyright (c) 2002 -// Aleksey Gurtovoy +// Copyright (c) 2002-2003 +// Aleksey Gurtovoy and David Abrahams // // Permission to use, copy, modify, distribute and sell this software // and its documentation for any purpose is hereby granted without fee, @@ -73,10 +73,14 @@ template< typename T > struct msvc_is_incomplete { - struct incomplete_; - BOOST_STATIC_CONSTANT(bool, value = - sizeof(void (T::*)()) == sizeof(void (incomplete_::*)()) - ); + // MSVC is capable of some kinds of SFINAE. If U is an incomplete + // type, it won't pick the second overload + static char tester(...); + template <class U> + static char(& tester(type_wrapper<U>) )[sizeof(U) + 1]; + + BOOST_STATIC_CONSTANT( + bool, value = sizeof(tester(type_wrapper<T>())) == 1); }; -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams wrote:
If that sounds like a reasonable compromise - in particular, to Nikolay - please feel free to implement it.
I did you one better. Now it just works with no BOOST_MPL_AUX_HAS_XXX_MSVC_NO_IS_INCOMPLETE switches required from the user:
--- has_xxx.hpp 8 Jul 2003 05:10:02 -0000 1.16 +++ has_xxx.hpp 2 Aug 2003 15:58:44 -0000 1.17 @@ -3,8 +3,8 @@ // See http://www.boost.org for updates, documentation, and revision history.
//-------------------------------------------------------------------------- ---
// -// Copyright (c) 2002 -// Aleksey Gurtovoy +// Copyright (c) 2002-2003 +// Aleksey Gurtovoy and David Abrahams // // Permission to use, copy, modify, distribute and sell this software // and its documentation for any purpose is hereby granted without fee, @@ -73,10 +73,14 @@ template< typename T > struct msvc_is_incomplete { - struct incomplete_; - BOOST_STATIC_CONSTANT(bool, value = - sizeof(void (T::*)()) == sizeof(void (incomplete_::*)()) - ); + // MSVC is capable of some kinds of SFINAE. If U is an incomplete + // type, it won't pick the second overload + static char tester(...); + template <class U> + static char(& tester(type_wrapper<U>) )[sizeof(U) + 1]; + + BOOST_STATIC_CONSTANT( + bool, value = sizeof(tester(type_wrapper<T>())) == 1); };
Clever! Some kinds of SFINAE make MSVC much more ICE-prone, though. I guess the regressions will show us if that's the case or not. Thanks for taking care of it! Aleksey
Is this patch MS version specific? Trying to build using VC7 from latest cvs with this patch: ...failed vc-C++ ..\..\..\libs\python\build\bin\boost_python.dll\msvc\debug\runtime-link-dyna mic\numeric.obj... vc-C++ ..\..\..\libs\python\build\bin\boost_python.dll\msvc\debug\runtime-link-dyna mic\list.obj list.cpp X:/boost/boost/mpl/aux_/has_xxx.hpp|80 error 2988| unrecognizable template declaration/definition X:/boost/boost/mpl/aux_/has_xxx.hpp|84| see reference to class template instantiation 'boost::mpl::aux::msvc_is_incomplete<T>' being compiled X:/boost/boost/mpl/aux_/has_xxx.hpp|80 error 2059| syntax error : '<end Parse>' X:/boost/boost/mpl/aux_/has_xxx.hpp|82 error 2332| 'enum' : missing tag name X:/boost/boost/mpl/aux_/has_xxx.hpp|82 error 2238| unexpected token(s) preceding ';'
"Brett Calcott" <brett.calcott@paradise.net.nz> writes:
Is this patch MS version specific?
Trying to build using VC7 from latest cvs with this patch:
...failed vc-C++ ..\..\..\libs\python\build\bin\boost_python.dll\msvc\debug\runtime-link-dyna mic\numeric.obj... vc-C++ ..\..\..\libs\python\build\bin\boost_python.dll\msvc\debug\runtime-link-dyna mic\list.obj list.cpp X:/boost/boost/mpl/aux_/has_xxx.hpp|80 error 2988| unrecognizable template declaration/definition X:/boost/boost/mpl/aux_/has_xxx.hpp|84| see reference to class template instantiation 'boost::mpl::aux::msvc_is_incomplete<T>' being compiled X:/boost/boost/mpl/aux_/has_xxx.hpp|80 error 2059| syntax error : '<end Parse>' X:/boost/boost/mpl/aux_/has_xxx.hpp|82 error 2332| 'enum' : missing tag name X:/boost/boost/mpl/aux_/has_xxx.hpp|82 error 2238| unexpected token(s) preceding ';'
Fixed now, sorry. -- Dave Abrahams Boost Consulting www.boost-consulting.com
Fixed now, sorry.
Not checked in though? Head is still this: ---------------------------- revision 1.17 date: 2003/08/02 15:58:44; author: david_abrahams; state: Exp; lines: +11 -7 Improved the incomplete type detection workaround for MSVC. It now works even with the /vmg switch which makes all member pointers the same size. ----------------------------
"Brett Calcott" <brett.calcott@paradise.net.nz> writes:
Fixed now, sorry.
Not checked in though?
Head is still this:
---------------------------- revision 1.17 date: 2003/08/02 15:58:44; author: david_abrahams; state: Exp; lines: +11 -7 Improved the incomplete type detection workaround for MSVC. It now works even with the /vmg switch which makes all member pointers the same size. ----------------------------
I beg to differ: ---------------------------- revision 1.18 date: 2003/08/03 11:48:55; author: david_abrahams; state: Exp; lines: +15 -1 Workaround for a heinous vc7 bug ---------------------------- Index: has_xxx.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/mpl/aux_/has_xxx.hpp,v retrieving revision 1.17 retrieving revision 1.18 diff -w -u -c -w -u -r1.17 -r1.18 cvs server: conflicting specifications of output style cvs server: conflicting specifications of output style --- has_xxx.hpp 2 Aug 2003 15:58:44 -0000 1.17 +++ has_xxx.hpp 3 Aug 2003 11:48:55 -0000 1.18 @@ -70,14 +70,28 @@ struct has_xxx_tag; +# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) + template <class U> + struct msvc_incomplete_array + { + typedef char (&type)[sizeof(U) + 1]; + }; +# endif + template <typename T> struct msvc_is_incomplete { // MSVC is capable of some kinds of SFINAE. If U is an incomplete // type, it won't pick the second overload static char tester(...); + +# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) + template <class U> + static typename msvc_incomplete_array<U>::type tester(type_wrapper<U>); +# else template <class U> static char(& tester(type_wrapper<U>) )[sizeof(U) + 1]; +# endif BOOST_STATIC_CONSTANT( bool, value = sizeof(tester(type_wrapper<T>())) == 1); -- Dave Abrahams Boost Consulting www.boost-consulting.com
I beg to differ: ---------------------------- revision 1.18 date: 2003/08/03 11:48:55; author: david_abrahams; state: Exp; lines:
+15 -1
Workaround for a heinous vc7 bug ----------------------------
weird. I saved the output of cvs log command, and it definitely had 1.17 as the head this morning (GMT+10). X:\boost\boost\mpl\aux_>ls -l temp -rw-rw-rw- 1 user group 3501 Aug 4 11:15 temp X:\boost\boost\mpl\aux_>cat temp RCS file: /cvsroot/boost/boost/boost/mpl/aux_/has_xxx.hpp,v Working file: has_xxx.hpp head: 1.17 ... It doesn't now though. Thanks, Brett
"Brett Calcott" <brett.calcott@paradise.net.nz> writes:
I beg to differ: ---------------------------- revision 1.18 date: 2003/08/03 11:48:55; author: david_abrahams; state: Exp; lines:
+15 -1
Workaround for a heinous vc7 bug ----------------------------
weird. I saved the output of cvs log command, and it definitely had 1.17 as the head this morning (GMT+10).
X:\boost\boost\mpl\aux_>ls -l temp -rw-rw-rw- 1 user group 3501 Aug 4 11:15 temp
X:\boost\boost\mpl\aux_>cat temp
RCS file: /cvsroot/boost/boost/boost/mpl/aux_/has_xxx.hpp,v Working file: has_xxx.hpp head: 1.17 ...
It doesn't now though.
For the rest of this month, the anonymous CVS is about 24 hours behind the developer CVS, FWIW. -- Dave Abrahams Boost Consulting www.boost-consulting.com
Diffs to the cvs from before couple of days: David Abrahams wrote:
Nikolay Mladenov ?nickm@sitius.com? writes:
? Dave, ? ? I am posting the diffs from 1.29.0 plus the test and doc files. ? Sorry for the delay. I hope you won't have problems applying the diffs.
Hmm, it seems likely that I will. 1.29.0 is two releases old and we have made a lot of changes since then. Is there any chance you can give me a patch against the current CVS state?
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Index: args.hpp =================================================================== RCS file: /d/Downloads/boost/boost/boost/python/args.hpp,v retrieving revision 1.14 diff -c -r1.14 args.hpp *** args.hpp 31 May 2003 14:53:01 -0000 1.14 --- args.hpp 28 Jul 2003 21:47:00 -0000 *************** *** 44,51 **** --- 44,62 ---- } keyword elements[nkeywords]; + keywords<size+1> operator , (const keywords<1> &k) const + { + python::detail::keywords<size+1> res; + std::copy(elements, elements+size, res.elements); + res.elements[size] = k.elements[0]; + return res; + } + keywords<size+1> operator , (const char *name) const; }; + + + # ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION template<typename T> struct is_keywords *************** *** 95,100 **** --- 106,132 ---- BOOST_PYTHON_MPL_LAMBDA_SUPPORT(1,is_reference_to_keywords,(T)) }; # endif + } + + struct arg : detail::keywords<1> + { + template <class T> + arg &operator = (T const &value) + { + elements[0].default_value = handle<>(python::borrowed(object(value).ptr())); + return *this; + } + explicit arg (char const *name){elements[0].name = name;} + operator detail::keyword const &()const {return elements[0];} + }; + + namespace detail + { + template <std::size_t nkeywords> + inline keywords< keywords<nkeywords>::size+1 > keywords<nkeywords>::operator , (const char *name) const + { + return this->operator , (arg(name)); + } } # define BOOST_PYTHON_ASSIGN_NAME(z, n, _) result.elements[n].name = name##n; Index: args_fwd.hpp =================================================================== RCS file: /d/Downloads/boost/boost/boost/python/args_fwd.hpp,v retrieving revision 1.3 diff -c -r1.3 args_fwd.hpp *** args_fwd.hpp 31 May 2003 14:53:01 -0000 1.3 --- args_fwd.hpp 28 Jul 2003 21:47:01 -0000 *************** *** 21,26 **** --- 21,27 ---- { char const* name; handle<> default_value; + keyword(char const* n=0):name(n){} }; template <std::size_t nkeywords = 0> struct keywords; Index: function.hpp =================================================================== RCS file: /d/Downloads/boost/boost/boost/python/object/function.hpp,v retrieving revision 1.18 diff -c -r1.18 function.hpp *** function.hpp 23 Jul 2003 13:08:59 -0000 1.18 --- function.hpp 28 Jul 2003 21:48:13 -0000 *************** *** 51,56 **** --- 51,57 ---- object m_namespace; object m_doc; object m_arg_names; + unsigned m_nkeyword_values; }; // Index: function.cpp =================================================================== RCS file: /d/Downloads/boost/boost/libs/python/src/object/function.cpp,v retrieving revision 1.33 diff -b -c -r1.33 function.cpp *** function.cpp 23 Jul 2003 17:04:05 -0000 1.33 --- function.cpp 31 Jul 2003 17:07:21 -0000 *************** *** 47,52 **** --- 47,53 ---- , unsigned num_keywords ) : m_fn(implementation) + , m_nkeyword_values(0) { if (names_and_defaults != 0) { *************** *** 66,78 **** for (unsigned i = 0; i < num_keywords; ++i) { PyTuple_SET_ITEM( ! m_arg_names.ptr() ! , i + keyword_offset , expect_non_null( PyString_FromString(const_cast<char*>(names_and_defaults[i].name)) ) ); } } --- 67,101 ---- for (unsigned i = 0; i < num_keywords; ++i) { + object tpl (handle<>( + PyTuple_New(names_and_defaults[i].default_value ? 2 : 1) + )); + PyTuple_SET_ITEM( ! tpl.ptr() ! , 0 , expect_non_null( PyString_FromString(const_cast<char*>(names_and_defaults[i].name)) ) ); + + if(names_and_defaults[i].default_value) + { + PyTuple_SET_ITEM( + tpl.ptr() + , 1 + , incref(names_and_defaults[i].default_value.get()) + ); + + ++m_nkeyword_values; + } + + + PyTuple_SET_ITEM( + m_arg_names.ptr() + , i + keyword_offset + , incref(tpl.ptr()) + ); } } *************** *** 101,114 **** do { // Check for a plausible number of arguments ! if (total_args >= f->m_fn.min_arity() ! && total_args <= f->m_fn.max_arity()) { // This will be the args that actually get passed handle<> args2(allow_null(borrowed(args))); ! if (nkeywords > 0) // Keyword arguments were supplied ! { if (f->m_arg_names.ptr() == Py_None) // this overload doesn't accept keywords { args2 = handle<>(); // signal failure --- 124,140 ---- do { // Check for a plausible number of arguments ! unsigned min_arity = f->m_fn.min_arity(); ! unsigned max_arity = f->m_fn.max_arity(); ! ! if (total_args + f->m_nkeyword_values >= min_arity ! && total_args <= max_arity) { // This will be the args that actually get passed handle<> args2(allow_null(borrowed(args))); ! if (nkeywords > 0 || total_args < min_arity) // Keyword arguments were supplied ! { // or default keyword values are needed if (f->m_arg_names.ptr() == Py_None) // this overload doesn't accept keywords { args2 = handle<>(); // signal failure *************** *** 131,148 **** } else { ! // build a new arg tuple ! args2 = handle<>(PyTuple_New(total_args)); // Fill in the positional arguments for (std::size_t i = 0; i < nargs; ++i) PyTuple_SET_ITEM(args2.get(), i, incref(PyTuple_GET_ITEM(args, i))); // Grab remaining arguments by name from the keyword dictionary ! for (std::size_t j = nargs; j < total_args; ++j) { ! PyObject* value = PyDict_GetItem( ! keywords, PyTuple_GET_ITEM(f->m_arg_names.ptr(), j)); if (!value) { --- 157,185 ---- } else { ! // build a new arg tuple, will adjust its size later ! args2 = handle<>(PyTuple_New(max_arity)); // Fill in the positional arguments for (std::size_t i = 0; i < nargs; ++i) PyTuple_SET_ITEM(args2.get(), i, incref(PyTuple_GET_ITEM(args, i))); // Grab remaining arguments by name from the keyword dictionary ! std::size_t j = nargs; ! std::size_t k = nargs; ! std::size_t size = PyTuple_GET_SIZE(f->m_arg_names.ptr()); ! ! for (; j < max_arity && j < size ; ++j) ! { ! PyObject* kwd = PyTuple_GET_ITEM(f->m_arg_names.ptr(), j); ! ! PyObject* value = nkeywords ? PyDict_GetItem( ! keywords, PyTuple_GET_ITEM(kwd, 0)) : 0; ! ! if (!value) { ! if (PyTuple_GET_SIZE(kwd) > 1) ! value = PyTuple_GET_ITEM(kwd, 1); if (!value) { *************** *** 150,156 **** args2 = handle<>(); break; } ! PyTuple_SET_ITEM(args2.get(), j, incref(value)); } } } --- 187,217 ---- args2 = handle<>(); break; } ! }else ! ++k; ! ! PyTuple_SET_ITEM(args2.get(), j, incref(value) ! ); ! } ! ! if (args2.get()) ! { ! //check if we proccessed all the arguments ! if(k < total_args) ! args2 = handle<>(); ! ! //adjust the parameter tuple size ! if(j<max_arity) ! { ! handle<> args3( PyTuple_New(j) ); ! ! for (size_t l = 0; l != j; ++ l) ! { ! PyTuple_SET_ITEM(args3.get(), l, PyTuple_GET_ITEM(args3.get(), l) ); ! PyTuple_SET_ITEM(args2.get(), l, 0); ! } ! args2 = args3; ! } } } } '''
from keywords import * f = Foo() f.a(), f.b(), f.n() (0, 0.0, '') f = Foo(1) f.a(), f.b(), f.n() (1, 0.0, '') f = Foo(1,1.0) f.a(), f.b(), f.n() (1, 1.0, '') f = Foo(1,1.0,"1") f.a(), f.b(), f.n() (1, 1.0, '1') f = Foo(a=1) f.a(), f.b(), f.n() (1, 0.0, '') f = Foo(b=1) f.a(), f.b(), f.n() (0, 1.0, '') f = Foo(n="1") f.a(), f.b(), f.n() (0, 0.0, '1') f = Foo(1,n="1") f.a(), f.b(), f.n() (1, 0.0, '1') f.set() f.a(), f.b(), f.n() (0, 0.0, '') f.set(1) f.a(), f.b(), f.n() (1, 0.0, '') f.set(1,1.0) f.a(), f.b(), f.n() (1, 1.0, '') f.set(1,1.0,"1") f.a(), f.b(), f.n() (1, 1.0, '1') f.set(a=1) f.a(), f.b(), f.n() (1, 0.0, '') f.set(b=1) f.a(), f.b(), f.n() (0, 1.0, '') f.set(n="1") f.a(), f.b(), f.n() (0, 0.0, '1') f.set(1,n="1") f.a(), f.b(), f.n() (1, 0.0, '1')
# lets see how badly we've broken the 'regular' functions
f = Bar() f.a(), f.b(), f.n() (0, 0.0, '') f = Bar(1) f.a(), f.b(), f.n() (1, 0.0, '') f = Bar(1,1.0) f.a(), f.b(), f.n() (1, 1.0, '') f = Bar(1,1.0,"1") f.a(), f.b(), f.n() (1, 1.0, '1') f.set() f.a(), f.b(), f.n() (0, 0.0, '') f.set(1) f.a(), f.b(), f.n() (1, 0.0, '') f.set(1,1.0) f.a(), f.b(), f.n() (1, 1.0, '') f.set(1,1.0,"1") f.a(), f.b(), f.n() (1, 1.0, '1') '''
def run(args = None): import sys import doctest if args is not None: sys.argv = args return doctest.testmod(sys.modules.get(__name__)) if __name__ == '__main__': print "running..." import sys sys.exit(run()[0])
Nikolay Mladenov <nickm@sitius.com> writes:
Diffs to the cvs from before couple of days:
Hi Nikolay, In future, please post patches as unified diffs (you can use cvs diff -wu). This patch appears to have some significant bogus code in it, especially in function.cpp. Just for example, I think the following block would never be entered:
! //adjust the parameter tuple size ! if(j<max_arity) ! { ! handle<> args3( PyTuple_New(j) ); ! ! for (size_t l = 0; l != j; ++ l) ! { ! PyTuple_SET_ITEM(args3.get(), l, PyTuple_GET_ITEM(args3.get(), l) ); ! PyTuple_SET_ITEM(args2.get(), l, 0); ! } ! args2 = args3; ! } } } }
It had better not be, because it is getting all the elements of args3 and putting them back there! I've enclosed the modified patch which seems to be working on my machine. I had to rename lots of variables in order to make sense of things. Please look it over to make sure it makes sense to you. -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
Diffs to the cvs from before couple of days:
Hi Nikolay,
In future, please post patches as unified diffs (you can use cvs diff -wu).
This patch appears to have some significant bogus code in it, especially in function.cpp. Just for example, I think the following block would never be entered:
! //adjust the parameter tuple size ! if(j<max_arity) ! { ! handle<> args3( PyTuple_New(j) ); ! ! for (size_t l = 0; l != j; ++ l) ! { ! PyTuple_SET_ITEM(args3.get(), l, PyTuple_GET_ITEM(args3.get(), l) ); ! PyTuple_SET_ITEM(args2.get(), l, 0); ! } ! args2 = args3; ! } } } }
It had better not be, because it is getting all the elements of args3 and putting them back there!
Yeah, I don't remember if the things have been different when I wrote this or I have just imagined that I can end up with min_arity < n_args < max_arity. I guess I have meant to copy arg2 -> arg3
! PyTuple_SET_ITEM(args3.get(), l, PyTuple_GET_ITEM(args2.get(), l) ); But anyway it seems really unreachable now.
I've enclosed the modified patch which seems to be working on my machine. I had to rename lots of variables in order to make sense of things. Please look it over to make sure it makes sense to you.
I like it better. Please apply it. Nikolay
participants (4)
-
Aleksey Gurtovoy -
Brett Calcott -
David Abrahams -
Nikolay Mladenov