Custom Query (2665 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (701 - 800 of 2665)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Ticket Summary Status Owner Type Milestone Component
#7258 boost::filesystem::create_directories(const &path) returns false if the path contains a slash at the end of the string new bemandawes Bugs To Be Determined filesystem

Reported by francis.thibault@…, 3 years ago.

Description

for example, if we want to create that following directory: path="C:/users/test/"

the function create_directories(path) returns false even if the directory is created and exists.

However, if we remove the slash at the end of the string path="C:/users/test", the function returns true.

Is it the normal behavior of that function?

Thanks.

#7260 Header order conflicts between Thread and ASIO new chris_kohlhoff Bugs To Be Determined asio

Reported by joshuadavidson@…, 3 years ago.

Description

This problem is still present as of 1.50. Link to discussion:  http://lists.boost.org/boost-users/2012/06/74823.php

Consider this following simple app:

#include <boost/thread/thread.hpp>

#include <boost/asio.hpp>

#include <boost/thread/recursive_mutex.hpp>

 

 

int main() {

 

                return 0;

}

If you try to build that on Windows, you receive the following error:

In file included from c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/recursive_mutex.hpp:14:0,

                 from c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/recursive_mutex.hpp:14,

                 from build.cpp:3:

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'void boost::detail::basic_recursive_mutex_impl<underlying_mutex_type>::lock()':

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:52:21: error: '_InterlockedExchange' is not a member of 'boost::detail'

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'void boost::detail::basic_recursive_mutex_impl<underlying_mutex_type>::unlock()':

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:71:21: error: '_InterlockedExchange' is not a member of 'boost::detail'

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'bool boost::detail::basic_recursive_mutex_impl<underlying_mutex_type>::try_basic_lock(long int)':

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:91:21: error: '_InterlockedExchange' is not a member of 'boost::detail'

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'bool boost::detail::basic_recursive_mutex_impl<underlying_mutex_type>::try_timed_lock(long int, const boost::system_time&)':

c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:102:21: error: '_InterlockedExchange' is not a member of 'boost::detail'

If asio.hpp is moved ahead of the thread headers, the error goes away. We’ve been trying to dictate #include order to work around this problem, but it keeps cropping up.

#7261 Boost.Units quantity output overflows ostream width field new steven_watanabe Bugs To Be Determined units

Reported by pbristow, 3 years ago.

Description

Boost.Units quantity output overflows ostream width field

quantity<length> ql = 2345.6 * meters;

std::cout << std::setw(20) << ql << std::endl;

outputs 22 chars instead of 20 chars.

The reason is that the first item value() is output using the ios width setting, but the second unit() 'm' (and separating space) is not.

if os.width() > 0 then a way is to build a single string of the quantity with the width specified for example using an ostringstream (otherwise, outputing value and unit (perhaps autoprefixed to km) severally would overflow the width).

(else if os.width() <= 0 then output directly to ostream os as at present).

A test and a patch to deal with this is attached.

(This is not necessarily the most efficient way to deal with this but appears to work).

#7268 Invalid DST for Europe/Paris before 1996 (using tzdatabase) new az_sw_dude Bugs To Be Determined date_time

Reported by guillaume.v.sanchez@…, 3 years ago.

Description

Hello,

Let me start with an example : For 1992, boost::datetime gives me (using the given timezone database) DST period from 1992-Mar-29 02:00:00 TO 1992-Oct-25 03:00:00

That's simply wrong. For 1996 and following years, it's correct, simply because, in 1996, France decided that DST occurs in the end of October. Before that date, it occured in the end of September.

Here is a table of true DST dates (dates are in European form, "day/month") :

1976 : 28/3 -- 26/9
1977 : 3/4 -- 5/9
1978 : 2/4 -- 1/10
1979 : 1/4 -- 30/9 

1980 : 6/4 -- 28/9 
1981 : 29/3 -- 27/9 
1982 : 28/3 -- 26/9 
1983 : 27/3 -- 25/9 
1984 : 25/3 -- 30/9 
1985 : 31/3 -- 29/9 
1986 : 30/3 -- 28/9 
1987 : 29/3 -- 27/9 
1988 : 27/3 -- 25/9 
1989 : 26/3 -- 24/9

1990 : 25/3 -- 30/9
1991 : 31/3 -- 29/9 
1992 : 29/3 -- 27/9 
1993 : 28/3 -- 26/9 
1994 : 27/3 -- 25/9
1995 : 26/3 -- 24/9 

================

1996 : 31/3 -- 27/10 
1997 : 30/3 -- 26/10 
1998 : 29/3 -- 25/10
1999 : 28/3 -- 31/10

2000 : 26/3 -- 29/10
2001 : 25/3 -- 28/10
2002 : 31/3 -- 27/10
2003 : 30/3 -- 26/10
2004 : 28/3 -- 31/10
2005 : 27/3 -- 30/10
2006 : 26/3 -- 29/10
2007 : 25/3 -- 28/10
2008 : 30/3 -- 26/10 
2009 : 29/3 -- 25/10 

2010 : 28/3 -- 24/10 
2011 : 27/3 -- 30/10

Thank you, Guillaume

#7273 Files created by boost::iostreams::mapped_file have unexpected permissions on Linux new turkanis Bugs To Be Determined iostreams

Reported by Mika Fischer <mika.fischer@…>, 3 years ago.

Description

The mapped_file class opens the file unconditionally via:

::open(p.path.c_str(), flags, S_IRWXU);

Which sets the permissions to read, write, execute for the owner and no permissions for group or others.

This is quite unexpected, and since it cannot be changed by the caller, I think a more sane default behavior would be to just use the default of open and let the user's umask decide the permission of newly created files.

I.e. just remove the last parameter:

::open(p.path.c_str(), flags);
#7274 svn server error 413 new dgregor Bugs To Be Determined trac / subversion

Reported by bartus@…, 3 years ago.

Description

Hi!

I cant preform svn update, on day old copy, without geting this error message: svn: Server sent unexpected return value (413 Request Entity Too Large) in response to REPORT request for '/repository/!svn/vcc/default'

regard.bartus

#7275 SIGSEGV in boost::asio::connect when compiled with g++ -std=c++0x new chris_kohlhoff Bugs To Be Determined asio

Reported by Alan Yuelkenbeck <ayuelkenbeck@…>, 3 years ago.

Description

Works fine when not compiled with -std=c++0x. GCC v. 4.6.3 on ubuntu 12.04 Linking to static libboost_thread, libboost_system (1.50.0 release config) Does not matter if server code is listening or not.

Minimal reproducible code below:

int main(int argc, char *argv[]) {

boost::asio::io_service service;

using namespace boost::asio::ip;

tcp::resolver resolver(service); tcp::resolver::query query(tcp::v4(), "127.0.0.1", "50001"); tcp::resolver::iterator itr = resolver.resolve(query);

if (itr != tcp::resolver::iterator()) {

tcp::socket s(service); boost::asio::connect(s, itr); Segmentation Fault Here

}

}

Callstack:

#0 0x8054d6e boost::asio::detail::reactive_socket_service_base::close(this=0x16, impl=..., ec=...) (reactive_socket_service_base.ipp:103) #1 0x8058f1a boost::asio::stream_socket_service<boost::asio::ip::tcp>::close(this=0x2, impl=..., ec=...) (stream_socket_service.hpp:151) #2 0x80589d5 boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >::close(this=0xbffff318, ec=...) (basic_socket.hpp:339) #3 0x8058186 boost::asio::connect<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp>, boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>, boost::asio::detail::default_connect_condition>(s=..., begin=..., end=..., connect_condition=..., ec=...) (connect.hpp:120) #4 0x80578a5 boost::asio::connect<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp>, boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp> >(s=..., begin=..., ec=...) (connect.hpp:56) #5 0x8056dd2 boost::asio::connect<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp>, boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp> >(s=..., begin=...) (connect.hpp:47) #6 0x8052f41 main(argc=1, argv=0xbffff874) (main.cpp:27)

Thank you.

#7288 Under windows it is possible to use io_service::poll without a previous call to reset! new chris_kohlhoff Bugs To Be Determined asio

Reported by code.databyte@…, 3 years ago.

Description

I found out, that it is possible under windows to use io_service::poll without calling reset on the same service before.

Under Linux the internal variable "stopped_" is checked in the immplementation. The windows immplementation doesent do that, although the documentation says: "The poll() function runs handlers [...] until the io_service has been stopped [...]."

#7295 mapped_region large file throw exception new igaztanaga Bugs To Be Determined interprocess

Reported by anonymous, 3 years ago.

Description

using namespace boost::interprocess;

const std::size_t FileSize? = 10000000000; if(argc == 1) { Parent process executes this

{ Create a file

std::filebuf fbuf; fbuf.open("e:
output
file.bin", std::ios_base::in | std::ios_base::out

| std::ios_base::trunc | std::ios_base::binary);

Set the size fbuf.pubseekoff(FileSize?-1, std::ios_base::beg); fbuf.sputc(0);

} Remove file on exit struct file_remove {

~file_remove (){ file_mapping::remove("file.bin"); }

} destroy_on_exit;

Create a file mapping file_mapping m_file("e:
output
file.bin", read_write);

Map the whole file with read-write permissions in this process try{ mapped_region region(m_file, read_write);

Get the address of the mapped region void * addr = region.get_address(); std::size_t size = region.get_size();

Write all the memory to 1 std::memset(addr, 1, size); } catch( boost::interprocess::interprocess_exception& ex ){

cout << "\njjhhh" << ex.what() << endl;

} Launch child process std::string s(argv[0]); s += " child ";

if(0 != std::system(s.c_str()))

return 1;

}

mapped_region region(m_file, read_write); throw a exception

#7299 Spirit Karma static assert with unicode enabled on Win32 and Win64 new hkaiser Bugs To Be Determined spirit

Reported by Dave Bailey <David.Bailey@…>, 3 years ago.

Description

The following code causes a static assert in boost/spirit/home/karma/detail/output_iterator.hpp. The problem is that buffer_sink stores charactes in a std::basic_string<wchar_t>, but when BOOST_SPIRIT_UNICODE is defined, the output character size is 32-bit. On Windows, wchar_t is 16-bit, which will always hit the static assert. On Linux, wchar_t is 32-bit so we don't have the issue.

#ifndef BOOST_SPIRIT_UNICODE
#define BOOST_SPIRIT_UNICODE
#endif

#include <boost/config/warning_disable.hpp>
#include <boost/spirit/home/qi.hpp>
#include <boost/spirit/home/karma.hpp>
#include <string>

namespace karma = boost::spirit::karma;

template<typename OutputIterator>
struct unicode_char_
 : public karma::grammar<OutputIterator, ::boost::spirit::char_encoding::unicode::char_type()>
{
    unicode_char_() : base_type(thechar)
    {
        using karma::unicode::char_;
        thechar = char_;
    }
    karma::rule<OutputIterator, ::boost::spirit::char_encoding::unicode::char_type()> thechar;
};

int main()
{
    typedef std::basic_string<boost::spirit::char_encoding::unicode::char_type> unicode_string;
    typedef std::back_insert_iterator<unicode_string> unicode_back_insert_iterator_type;

    unicode_string input; 
    unicode_string output;

    unicode_back_insert_iterator_type insert_iter(output);

    unicode_char_<unicode_back_insert_iterator_type> unichar;

    karma::generate(insert_iter,unichar,input);

    return 0;
}

#7304 size of a fusion sequences is signed, should be unsigned new djowel Bugs To Be Determined fusion

Reported by mgaunard, 3 years ago.

Description

fusion::result_of::size< fusion::vector<int, int> >::type::value is signed, even though it should be size_t.

It appears the problem is two-fold:

  • fusion::result_of::size<T>::value is not the same type as fusion::result_of::size<T>::type::value_type
  • size of fusion::vector is defined to be a mpl::int_ (it also seems it is the case for all fusion sequences types!)

The fact that this is wrongly signed causes all sorts of warnings.

#7305 zip_view silently ignores elements new djowel Bugs To Be Determined fusion

Reported by mgaunard, 3 years ago.

Description

zip_view takes the minimum size of all the sequences it is given. As a result it may silently ignore elements, which is not desirable.

I think it would be better if it checked all sequences were the same size.

#7307 boost::filesystem::remove_all(dirname,ec) throws on write protected directories new bemandawes Bugs To Be Determined filesystem

Reported by bach@…, 3 years ago.

Description

Hi there,

according to the documentation, functions with error_code should not throw except if storage cannot be allocated.

The following throws if directory "bla" exists but is write protected:

  string bla("bla");
  boost::system::error_code ec;
  boost::filesystem::remove_all(bla,ec);

The bla directory looks like this:

ls -l bla
d--------- 2 bach bach     4096 2012-08-30 23:56 bla

Output of the program is:

terminate called after throwing an instance of "boost::filesystem::filesystem_error" what(): boost::filesystem::directory_iterator::construct: Permission denied: "bla" Aborted

System: Ubuntu 9.10 Boost: 1.50, looking through change notes for 1.51 I did not see any entries for filesystem which could address this.

Best,

Bastien

#7310 filesystem::path::iterator::operator+ is unusable due to compile error new bemandawes Bugs To Be Determined filesystem

Reported by Craig Dickson <cdickson@…>, 3 years ago.

Description

Boost 1.50, MS Visual Studio 2010. I find that if I attempt to use the + operator on a path::iterator, I get a compiler error saying that the method "advance" is not part of path::iterator. If I comment out my use of this operator, and instead use only ++, then everything compiles.

Here are the details from the compiler:

boost/iterator/iterator_facade.hpp(544): error C2039: 'advance' : is not a member of 'boost::filesystem::path::iterator'
    boost/filesystem/path.hpp(570) : see declaration of 'boost::filesystem::path::iterator'
    boost/iterator/iterator_facade.hpp(690) : see reference to function template instantiation 'void boost::iterator_core_access::advance<Derived>(Facade &,__w64 int)' being compiled
    with
    [
        Derived=boost::filesystem::path::iterator,
        Facade=boost::filesystem::path::iterator
    ]
    boost/iterator/iterator_facade.hpp(689) : while compiling class template member function 'boost::filesystem::path::iterator &boost::iterator_facade<Derived,Value,CategoryOrTraversal>::operator +=(__w64 int)'
    with
    [
        Derived=boost::filesystem::path::iterator,
        Value=const boost::filesystem::path,
        CategoryOrTraversal=boost::bidirectional_traversal_tag
    ]
    boost/filesystem/path.hpp(574) : see reference to class template instantiation 'boost::iterator_facade<Derived,Value,CategoryOrTraversal>' being compiled
    with
    [
        Derived=boost::filesystem::path::iterator,
        Value=const boost::filesystem::path,
        CategoryOrTraversal=boost::bidirectional_traversal_tag
    ]
#7313 filesystem reference doc shows path::u16string(), but it doesn't exist new bemandawes Bugs To Be Determined filesystem

Reported by Craig Dickson <cdickson@…>, 3 years ago.

Description

The Boost 1.50 filesystem reference says that filesystem::path has methods u16string(), generic_u16string(), u32string() and generic_u32string(), but they don't exist in the code. MS Visual Studio 2010's C++ compiler can't find them, and a grep of the boost::filesystem source doesn't find them either. Please either implement these methods or remove them from the docs.

(My preference would be that you implement these methods, and also, for completeness, add u8string() and generic_u8string(), which would return UTF-8 instead of using the current locale.)

#7315 A fusion adapted struct with a single member doesn't work with the Qi list operator new djowel Bugs To Be Determined spirit

Reported by vexocide, 3 years ago.

Description

As demonstrated in the attached file a fusion adapted struct with a single member doesn't work with the Qi list operator whereas its equivalent based on the kleen operator does work.

#7316 Build boost.python fails with python 3.2.3 new rwgk Bugs To Be Determined Python

Reported by Sergey Dmitriev <dmi3evsv@…>, 2 years ago.

Description
$ ./b2 -q -d+2 variant=release link=shared threading=multi runtime-link=shared  | grep err
libs/mpi/src/python/datatypes.cpp:20:33: error: ‘PyInt_Type’ was not declared in this scope
libs/mpi/src/python/py_environment.cpp:53:37: error: cannot convert ‘char**’ to ‘wchar_t**’ for argument ‘2’ to ‘void PySys_SetArgv(int, wchar_t**)’

$ uname -a
Linux asus 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

$ python3 --version
Python 3.2.3

$ echo "import sys; print( sys.prefix )" | python3
/usr

$  cat project-config.jam | grep python
using python : 3.2 : /usr ;
#7319 Take care of c++std-lib-32966 issue assigned viboes Bugs To Be Determined thread

Reported by viboes, 2 years ago.

Description

Take care of the issue raised by Howard Hinnant in

[c++std-lib-32966] Public service announcement concerning ~condition_variable_any()

"Both condition_variable and condition_variable_any are based on the POSIX pthread_cond_t. One of the very subtle behaviors of pthread_cond_t is that it is ok for a pthread_cond_t to be destroyed after all waiting threads have been signaled (assuming no new threads initiate a wait). There's even an example demonstrating this at  http://www.unix.org/online.html under the specification for pthread_cond_destroy.

This subtlety is reflected in the Requires clause for the destructor of both condition_variable and condition_variable_any:

Requires: There shall be no thread blocked on *this. [Note: That is, all threads shall have been notified; they may subsequently block on the lock specified in the wait. This relaxes the usual rules, which would have required all wait calls to happen before destruction. Only the notification to unblock the wait must happen before destruction. The user must take care to ensure that no threads wait on *this once the destructor has been started, especially when the waiting threads are calling the wait functions in a loop or using the overloads of wait, wait_for, or wait_until that take a predicate. — end note ]

To be *perfectly* clear, the following is ok:

  Thread A                    Thread B
   ...                        lk.lock()
   ...                        cv.wait(lk)
  lk.lock()                      ...
  cv.notify_one()                ...
  cv.~condition_variable_any()   ...
  lk.unlock()                    ...
    ...                       finally exits cv.wait  // ok, not a data race

"

#7320 Warnings "duplicate friend declaration" with Intel C++ Compiler XE 12.1.5.344 new emildotchevski Bugs To Be Determined exception

Reported by abrarov@…, 2 years ago.

Description

There are some warnings "duplicate friend declaration" with Intel C++ Compiler XE 12.1.5.344 at Windows (Windows 7 SP1 Pro) during building of programs using Boost.Exception:

1>..\..\..\..\boost_1_51_0\boost/exception/exception.hpp(258): warning #367: duplicate friend declaration
1>            friend struct exception_detail::get_info<throw_function>;
1>            ^
1>  
1>..\..\..\..\boost_1_51_0\boost/exception/exception.hpp(259): warning #367: duplicate friend declaration
1>            friend struct exception_detail::get_info<throw_file>;
1>            ^
1>  
1>..\..\..\..\boost_1_51_0\boost/exception/exception.hpp(260): warning #367: duplicate friend declaration
1>            friend struct exception_detail::get_info<throw_line>;
1>            ^

The warning level is Level4 (/W4).

#7332 Missing inline directives in crc.hpp new dlwalker Bugs To Be Determined crc

Reported by Sergey Fokin <drigh@…>, 2 years ago.

Description

see diff with fix

#7340 Visual studio iostreams warnings new turkanis Bugs To Be Determined iostreams

Reported by Alan Birtles <alan.birtles@…>, 2 years ago.

Description

Visual studio 2010 raises "conditional expression is constant" warnings from chain.hpp. This can be fixed by simply including the disable_warnings header in chain.hpp

Visual studio 2010 raises various "unreachable code" warnings. This can be fixed by adding warning 4702 in disable_warnings.hpp

Visual studio 2012 raises a "inherits via dominance" warning from stream.hpp (see  http://connect.microsoft.com/VisualStudio/feedback/details/733720/inheriting-from-std-fstream-produces-c4250-warning for the cause of this warning). This requires including the disable_warnings header in stream.hpp and adding warning 4250 to disable_warnings.

#7341 Vector subscript out of range exception when calling weighted_core_numbers reopened jewillco Bugs To Be Determined graph

Reported by Ian Robertson <irober67@…>, 2 years ago.

Description

I get a vector subscript out of range exception when calling the weighted_core_numbers function in the boost graph library. The exception is actually thrown from within the mutable_queue::update function, but I can't tell if the error is in mutable_queue or in weighted_core_numbers.

The attached test program is sufficient to show the problem. The test network is taken from Figure 1 of the Batagelj-Zaversnik paper ( http://vlado.fmf.uni-lj.si/pub/networks/doc/cores/cores.pdf), with random integer weights of 1, 2, or 3 added to each edge.

#7344 Free properties not available in conditional rule new vladimir_prus Bugs To Be Determined build

Reported by anonymous, 2 years ago.

Description

Free properties are not propagated to common-properties2 rule in targets.jam file. Rationale behind this is to optimise caching of already created property-set objects (exactly as stated in rule common-properties, which contains the call).

However, this optimisation causes that free features are not passed e.g. to user-defined rules used for evaluation of <conditional> properties (see example below in the second code listing).

Therefore I would propose to drop this optimisation and propagate also free properties (see code listing below). The other possible solution would be to just pass free properties to the common-properties2 rule and thus make them available to the algorithm, but this will introduce another bug (property-set object from cache will be used even though it contains values created from different free properties).

SOLUTION PROPOSAL

rule common-properties ( build-request requirements )
{
    local props = [ property-set.create
        [ $(requirements).base ]
        [ $(requirements).incidental ]
        [ $(requirements).free ]
    ] ;

    local key = .rp.$(build-request)-$(props) ;
    if ! $($(key))
    {           
        $(key) = [ common-properties2 $(build-request) $(props) ] ;        
    }        
    return $($(key)) ;
}

BUG REPRODUCTION

import feature ;


feature.feature define-prefix : : free ;

rule define-target-os ( properties * )
{
  local define-prefix = [ feature.get-values define-prefix : $(properties) ] ;
  define-prefix ?= "" ;
  local target-os = [ feature.get-values target-os : $(properties) ] ;
  return <define>$(define-prefix)TARGET_OS_$(target-os:U) ;
}


project /root
  : requirements
      <define-prefix>FOOBAR_
      <conditional>@define-target-os
;


exe hello
 : #sources
     hello.cpp
 : #requirements
;
#7353 no newline at end of file reopened djowel Bugs To Be Determined fusion

Reported by habdank@…, 2 years ago.

Description

Dears,

Some Boost packages causes flood of warnings "no newline at end of file" on gcc compiler.

As example:

Line 15773: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15788: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15800: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15815: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15830: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15845: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15860: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15875: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp:21:7: warning: no newline at end of file
	Line 15931: ../../../../externals/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp:21:7: warning: no newline at end of file
	Line 15945: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: In file included from ../../../../externals/boost/fusion/tuple/tuple_tie.hpp:18no newline at end of file
	Line 15959: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: no newline at end of file
	Line 15973: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple.hpp:21:7: warning: no newline at end of file
	Line 15987: ../../../../externals/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp:21:7: warning: no newline at end of file
	Line 16001: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: no newline at end of file
	Line 16015: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple.hpp:21:7: warning: no newline at end of file
	Line 16029: ../../../../externals/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp:21:7: warning: no newline at end of file
	Line 16043: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: no newline at end of file
	Line 16057: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple.hpp:21:7: warning: no newline at end of file
	Line 16071: ../../../../externals/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp:21:7: warning: no newline at end of file
	Line 16085: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: no newline at end of file
	Line 16099: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple.hpp:21:7: warning: no newline at end of file
	Line 16113: ../../../../externals/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp:21:7: warning: no newline at end of file
	Line 16127: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: no newline at end of file
	Line 16141: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple.hpp:21:7: warning: no newline at end of file
	Line 16155: ../../../../externals/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp:21:7: warning: no newline at end of file
	Line 16169: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: no newline at end of file
	Line 16183: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple.hpp:21:7: warning: no newline at end of file
	Line 16197: ../../../../externals/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp:21:7: warning: no newline at end of file
	Line 16211: ../../../../externals/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp:21:7: warning: no newline at end of file
#7356 program crashed when using phoenix::switch_,case<> with STL::for_each, using std::vector<int> as the container new theller Bugs To Be Determined phoenix

Reported by wqgg123@…, 2 years ago.

Description

Problem: the program is listed as bellow, complied with mingw32-gcc-4.6.2, enabling std++0x. The program is OK when running in debug model, but crashed in release mode. The error code is -1073741819.

#include <iostream> #include <vector> #include <algorithm> #include <boost/phoenix.hpp>

using namespace std; using namespace boost; using phoenix::placeholders::arg1;

int main() {

vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};

for_each(vec.begin(), vec.end(),

switch_(arg1) [

phoenix::case_<1>(cout << phoenix::val("One") << '\n'), phoenix::case_<2>(cout << phoenix::val("Two") << '\n'), phoenix::default_(cout << phoenix::val("other value") << '\n')

]);

return 0;

}

#7364 ambiguity error constructing std::vector from assign::list_of new nesotto Bugs To Be Determined assign

Reported by eric_niebler, 2 years ago.

Description

The problem is due to the addition of rvalue-reference container constructors. The following fails to compile with vc10:

#include <vector>
#include <boost/assign/list_of.hpp>

int main()
{
    std::vector<int> i(boost::assign::list_of(1));
}

The error is:

1>c:\boost\org\trunk\libs\proto\scratch\main.cpp(6): error C2668: 'std::vector<_Ty>::vector' : ambiguous call to overloaded function
1>          with
1>          [
1>              _Ty=int
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(593): could be 'std::vector<_Ty>::vector(std::vector<_Ty> &&)'
1>          with
1>          [
1>              _Ty=int
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(515): or       'std::vector<_Ty>::vector(unsigned int)'
1>          with
1>          [
1>              _Ty=int
1>          ]
1>          while trying to match the argument list '(boost::assign_detail::generic_list<T>)'
1>          with
1>          [
1>              T=int
1>          ]
1>
1>Build FAILED.
#7366 program_options/variables_map.hpp warning C4275 new vladimir_prus Bugs To Be Determined program_options

Reported by maciek.siemczyk@…, 2 years ago.

Description

When trying to build release version (debug version builds successfully) of our library with boost 1.49 I get the following warning:

1>d:\sb\EventEngine_trunk\outputs\intermediates\include\boost/program_options/variables_map.hpp(148) : warning C4275: non dll-interface class 'std::_Container_base_aux' used as base for dll-interface class 'std::_Container_base_aux_alloc_real<_Alloc>' 1> with 1> [ 1> _Alloc=std::allocator<std::pair<const std::string,boost::program_options::variable_value>> 1> ] 1> d:\Software\VS2008\VC\include\xutility(377) : see declaration of 'std::_Container_base_aux'

Our software has treat warnings as errors enabled so I have to resort to disabling that compiler warning in order to build. Are there any plans to address this?

#7369 grow() resets permissions new igaztanaga Bugs To Be Determined interprocess

Reported by Aaron Wright <Aaron_Wright@…>, 2 years ago.

Description

I need to create shared memory with unrestricted permissions (0666). This works fine. When I attempt to grow the shared memory, using the grow() function, the permissions get reset to 0644.

I followed the code a bit and saw that it was using ftruncate. Checking the man page for ftruncate reveals, "the set-user-ID and set-group-ID permission bits may be cleared." Not sure what affects the "may" clause, but it did it every time for me. Umask was set to 0000.

Obviously this only effects systems using ftruncate. Windows works correctly.

Not sure on what versions may be needed, but: libc6 - 2.11.1 libglib2.0 - 2.24.1 gcc - 4.4.3

#7371 boost::spirit::classic::char_parser<DerivedT>::parse is incrementing the scanner's first iterator directly instead of using the provided iterator_policy new djowel Bugs To Be Determined spirit

Reported by mhilferink@…, 2 years ago.

Description

In boost\spirit\home\classic\core\primitives\primitives.hpp

boost::spirit::classic::char_parser<DerivedT>::parse is defined to increment the scanner's first iterator directly instead of using the provided iterator_policy.

I'm using a scanner with an iterator that doesn't have a ++ operator and provided an iteration policy with redefined advance, get, and at_end methods.

This works fine if the following patch is implemented in boost\spirit\home\classic\core\primitives\primitives.hpp:

  if (!scan.at_end())
  {
      value_t ch = *scan;
      if (this->derived().test(ch))
      {
          iterator_t save(scan.first);
-         ++scan.first; 
+         ++scan; 
          return scan.create_match(1, ch, save, scan.first);
      }
  }

This patch forwards the increment request to scanner_policies<streamer_policy>::advance to let it do its thing with scan.first

I've seen this (and corrected it locally) at least in boost.sprit from boost version 1.40.0 and 1.51.0

Can somebody with RW access to boost.spirit implement this? Or tell me I should adapt my iterator objects directly.

I'm new to GIT and not a spirit developer, but I can try to make a git pull request if that is the way to send-in change requests.

#7377 Abort trap when using Program Options new vladimir_prus Bugs To Be Determined program_options

Reported by lordthistle@…, 2 years ago.

Description

Hello,

I tried to run the simple example provided on the web site at the following URL (file 'first'):

http://www.boost.org/doc/libs/1_51_0/doc/html/program_options/tutorial.html#id2547756

When I run: ./test_po a b c d e OR ./test_po --compression 1 there are no problems.

When I run ./test_po --compression ./test_po -compression ./test_po -a OR ./test_po -a 1 ./test_po -aa oR ./test_po --a 1 the program fails due to an abort trap.

This is my working environment:

  • boost 1.51.1
  • OS X 10.6.8
  • g++ i686-apple-darwin10-g++-4.2.1

Please let me know in case you need more info.

Regards

#7379 Boost Format strings causing memory leaks new samuel_krempp Bugs To Be Determined format

Reported by Jason Vincent <jason.vincent@…>, 2 years ago.

Description

I determined that certain format string used in a boost::wformat object will leak memory. I was using a formatter to convert a value to a floating point value with and without a percent symbol at the end.

The two format strings I was using were:

L"%1$.1f"
  • format with one decimal place of precision
L"%1$.0f %%"
  • format with no decimal places but add a percent sign

I determined that removing the "%%" reduced some of the memory leaks, and removing the "$.1f" or "$.0f" eliminated the remaining memory leaks.

This was done using Boost v 1.44 with Visual Studio 2010 on Win 7 64-bit.

For more context here is part of the code that I can share:

note, mFormatter is a boost::wformat member object

MyObject::MyObject() :
    mNumDecimalPlaces   (1),
    mFormatter          (L"%1$.1f")  //--- THIS LEAKED
{
}


std::wstring MyObject::PercentToString(const FLOAT iMin,
                                       const FLOAT iMax,
                                       const FLOAT iPercent)
{
    FLOAT value = PercentToValue(iMin, iMax, iPercent);

    return boost::str(mFormatter % value); //--- THIS LEAKED
}
#7385 Unused parameter causes compilation error new vladimir_prus Bugs To Be Determined program_options

Reported by lcarreon@…, 2 years ago.

Description

When the compiler is set to treat warnings as errors, the line #253:

virtual void set_option_name(const std::string& option_name) {}

in the file program_options/errors.hpp, causes a compilation error.

#7391 phoenix::insert compile fails with libc++ new theller Bugs To Be Determined phoenix

Reported by Naomasa Matsubayashi, 2 years ago.

Description

Following code produces a compile error with libc++.

#include <vector>
#include <boost/phoenix.hpp>

int main() {
  std::vector< int > hoge;
  std::vector< int > fuga;
  namespace phx = boost::phoenix;
  phx::insert( phx::placeholders::_1, phx::placeholders::_2, fuga.begin(), fuga.end() )( hoge, hoge.end() );
}

That is because phoenix::insert expects the member function insert returns void when was is called with 3 arguments. That is correct in C++03 but not in C++11.( All insert overloads returns an iterator in C++11 [23.3.7.1] )

Since libstdc++ returns void even if the code was compiled as C++11, the problem doesn't appear. But at least with libc++, it fails to compile and following error message is produced.

      void function 'operator()' should not return a value [-Wreturn-type]
                return c.insert(arg1, arg2, arg3);
                ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~

This patch fixed the problem on libc++. I think it needs more intelligent way to detect environments those insert always return a iterator. But I don't have any good idea on that :(

--- boost/phoenix/stl/container/container.hpp
+++ boost/phoenix/stl/container/container.hpp
@@ -425,6 +425,9 @@
                 choice_1;
 
                 typedef
+#ifdef _LIBCPP_VERSION
+                    iterator_of<C>
+#else
                     boost::mpl::eval_if_c<
                         boost::mpl::and_<
                             boost::is_same<Arg3, mpl::void_>
@@ -433,8 +436,8 @@
                       , iterator_of<C>
                       , boost::mpl::identity<void>
                     >
+#endif
                 choice_2;
-
             public:
 
                 typedef typename
#7396 filesystem::path::remove_all(path, error_code) throws filesystem_error exception new bemandawes Bugs To Be Determined filesystem

Reported by Craig Dickson <cdickson@…>, 2 years ago.

Description

Several methods in filesystem::path, including remove_all, have an overload in which an extra error_code& argument is taken. According to the docs, this is supposed to cause failure (other than failure to allocate storage) to be reported in the error_code rather than as a thrown filesystem_error exception. However, remove_all can still throw filesystem_error exceptions because it uses a directory_iterator internally but makes no attempt to catch exceptions thrown by it. For example, if a subdirectory is deleted by another thread or process just before remove_all tries to list its contents, directory_iterator_construct will throw a filesystem_error that propagates up to remove_all's caller.

As a side note, I think path and directory_iterator are both excessively exception-happy. It makes them painful to use.

#7404 filesystem::canonical fails on UNC paths on Windows new bemandawes Bugs To Be Determined filesystem

Reported by Craig Dickson <cdickson@…>, 2 years ago.

Description

The filesystem library function canonical(p, base) fails for all UNC paths on Windows because it gets an "invalid path" error when it calls symlink_status at line 816 of operations.cpp. Example: For the path "server/share/file", the first time execution reaches line 816 of operations.cpp, it calls is_symlink(detail::symlink_status("server", ec)) and ec is set to the Windows "invalid path" system error code.

#7406 Documentation lists the wrong constructor for char_delimiters_separator new jsiek Bugs To Be Determined tokenizer

Reported by Therefore <therefore@…>, 2 years ago.

Description

http://www.boost.org/doc/libs/1_39_0/libs/tokenizer/char_delimiters_separator.htm

lists as the constructor:

explicit char_delimiters_separator(bool return_delims = false,
 const Char* returnable = "",const Char* nonreturnable = "" )

when it is in fact:

explicit char_delimiters_separator(bool return_delims = false,
   const Char* returnable = 0,const Char* nonreturnable = 0)

from token_functions.hpp

#7419 Support multiple calls to framework::init() allowing wrappers to support running tests using test tools in full systems new rogeeff Bugs To Be Determined test

Reported by Jamie Allsop <ja11sop@…>, 2 years ago.

Description

Boost.Test is designed on the assumption that a special main() function will be provided to ensure the test framework is initialised properly and that the function needed to add test suites for execution is properly provided. This works well for simple test programs.

However another important use case we have and I'm sure others too is that we also wish to run our production systems 'as-if' in production but have tests execute when run in a 'testing' mode.

This has the benefit of allowing full use of all the Boost.Test tool facilities and makes test points easily recognisable. Additionally it also means the test out analysis tools that we use for Boost.Test in our unit testing can be used without modification. Hence on a coding level we use the same test code as for unit tests and we then benefit from being able to directly interpret the results, just as we do for normal unit tests.

In order to support this within the Boost.Test framework (we use the unit-test framework for this as we simply require access to the tools and reporting facilities) we must make it possible to write a test runner wrapper than can ultimately call boost::unit_test::framework::init() more than once.

A minimal test runner class might look like this (taken from a real code but stripped down so will not work as is):

namespace test {

class runner
{
public:

    using master_test_suite_t  = boost::unit_test::master_test_suite_t;
    using test_suite_t         = boost::unit_test::test_suite;
    using call_add_tests_t     = boost::function<void( master_test_suite_t& )>;

public:

    static
    void store_properties( /* properties from commandline or config file */ )
    {
        auto& Runner = instance();
        Runner.store_arguments( /* properties */ );
    }

    static
    int run( const std::string& Title, const call_add_tests_t& Callback )
    {
        auto& Runner = instance();

        Runner.set_title( Title );
        Runner.set_add_tests_callback( Callback );

#ifdef BOOST_TEST_ALTERNATIVE_INIT_API
        boost::unit_test::init_unit_test_func init_func = &runner::init_unit_test;
#else
        boost::unit_test::init_unit_test_func init_func = &runner::init_unit_test_suite;
#endif
        return boost::unit_test::unit_test_main( init_func, Runner.argc(), Runner.argv() );
    }

private:

    runner()
    {
    }

    static runner& instance()
    {
        static runner Runner;
        return Runner;
    }

private:

    static
    bool init_unit_test()
    {
        init_unit_test_suite( 0, 0 );
        return true;
    }

    static
    boost::unit_test::test_suite* init_unit_test_suite( int argc, char* argv[] )
    {
        auto AddTests = runner::instance().get_add_tests_callback();
        if( AddTests )
        {
            AddTests( boost::unit_test::framework::master_test_suite() );
        }
        return 0;
    }

private:

    void store_arguments( /* properties */  )
    {
        ArgumentStrings_ = /* copy of Boost.Test relevant properties */
        Arguments_ = /* pointers to actual strings in ArgumentStrings_ */
    }

private:

    int argc() const
    {
        return ArgumentStrings_.size();
    }

    char** argv() const
    {
        return const_cast<char**>( &Arguments_[0] );
    }

    void set_title( const std::string& Title )
    {
        if( ArgumentStrings_.empty() )
        {
            ArgumentStrings_.push_back( Title );
            Arguments_.push_back( ArgumentStrings_[0].c_str() );
            Arguments_.push_back( 0 );
        }
        else
        {
            ArgumentStrings_[0] = Title;
            Arguments_[0] = ArgumentStrings_[0].c_str();
        }
    }

    void set_add_tests_callback( const call_add_tests_t& Callback )
    {
        Callback_ = Callback;
    }

    const call_add_tests_t& get_add_tests_callback()
    {
        return Callback_;
    }

private:

    call_add_tests_t            Callback_;
    std::vector<std::string>    ArgumentStrings_;
    std::vector<const char*>    Arguments_;
};

} // test

We would use a runner like this as follows:

    // Implement a function to add tests to the Master Test Suite
    // Note this can be a member function and simply call
    // another member to collate the test suites
    void add_tests( test::runner::master_test_suite_t& MasterSuite )
    {
        MasterSuite.add( scenario_test_suite() );
    }

    // A
    test::runner::test_suite_t* scenario_test_suite()
    {
        auto* test_suite = BOOST_TEST_SUITE( Name_.c_str() );

        test_suite->add( BOOST_TEST_CASE( boost::bind( &self_t::validate_incoming_messages, this->shared_from_this() ) ) );
        test_suite->add( BOOST_TEST_CASE( boost::bind( &self_t::validate_outgoing_messages, this->shared_from_this() ) ) );
        test_suite->add( BOOST_TEST_CASE( boost::bind( &self_t::validate_data_messages,     this->shared_from_this() ) ) );

        return test_suite;
    }

    // Calling test() actually causes the tests to be executed
    // We assume in this example that the object that
    // test() belongs to is a shared_ptr
    void test()
    {
        test::runner::run( Name_, boost::bind( &self_t::add_tests, this->shared_from_this(), _1 ) );
    }

The attached patch makes the above code possible by doing 2 things:

  1. If the macro BOOST_TEST_USE_QUALIFIED_COMMANDLINE_ARGUMENTS is defined then the Boost.Test command line arguments are scoped using boost.test.* as a prefix. This means commandline arguments used to control tests will not interfere with command line arguments used to control the code being tested. --log_level is an excellent example of why you might need to do that. --boost.test.log_level is much clearer and will not clash.
  1. Calls to boost::unit_test::framework::init() will occur each time run() is called. However with the patch each call resets the framework to a consistent initial state and the tests proceed as expected as if the framework had been called once from main().

We are using this patch with boost 1.48 right now (and so it is very slightly different due to the changes between 1.48 and trunk) and it allows us to run our main processes in a 'test' mode generating full test result output with timings that are then sent to our build server. It works very well, has no impact on normal unit test usage and is a very small change for a very big gain.

This patch along with the patches attached to these tickets:

#7397
Boost.Test, since boost 1.48 is using the deprecated Boost.Timer class - it should be updated to use the new class
#7410
Test Units (Cases and Suites) in Boost.Test do not capture __FILE__ and __LINE__ at declaration point making it impossible to provide source file linking using external test management tools
#7417
Detailed test status is not available in the Boost.Test log (status, assertions, passed) and so live test case status cannot be tracked

...combine to significantly improve the value of Boost.Test in terms of integration with thirdparty analysis tools and integration with other code libraries.

Given the small changes that are made I'd like to see them hopefully make it into the next boost release.

#7420 If I call managed_shared_memory() function when I create a lot of objects, it ocurrs error. new igaztanaga Bugs To Be Determined interprocess

Reported by anonymous, 2 years ago.

Description

I want to call managed_shared_memory(), when I create a lot of objects... however,it ocurrs error. In additional, it's too show to create shared memory and segment..

You can check a attached file.

Should I call managed_shared_memory() only one time?

please answer..

#7423 std::map::erase returns iterator in C++11 mode instead of void, should be handled properly new theller Bugs To Be Determined phoenix

Reported by Andrei Elovikov <a.elovikov@…>, 2 years ago.

Description

The issue is with the following code: boost/phoenix/stl/container.hpp, line 284

        namespace result_of
        {
            template <typename C, typename Arg1, typename Arg2 = mpl::void_>
            struct erase
            {
                //  BOOST_MSVC #if branch here in map_erase_result non-
                //  standard behavior. The return type should be void but
                //  VC7.1 prefers to return iterator_of<C>. As a result,
                //  VC7.1 complains of error C2562:
                //  boost::phoenix::stl::erase::operator() 'void' function
                //  returning a value. Oh well... :*

                typedef
                    boost::mpl::eval_if_c<
                        boost::is_same<
                            typename remove_reference<Arg1>::type
                          , typename iterator_of<C>::type
                        >::value
#if defined(BOOST_MSVC)// && (BOOST_MSVC <= 1500)
                      , iterator_of<C>
#else
                      , boost::mpl::identity<void>
#endif
                      , size_type_of<C>
                    >
                map_erase_result;

                typedef typename
                    boost::mpl::eval_if_c<
                        has_mapped_type<C>::value
                      , map_erase_result
                      , iterator_of<C>
                    >::type
                type;
            };
        }

It seems that MSVC's behaviour becomes the standard one with C++11.

Also the current check seems to be done incorrectly because Intel Compiler uses MSVC's stl library on Windows, so checking for _MSC_VER will be more appropriate, I think.

#7433 MSVC runtime check fix in crc reopened dlwalker Bugs To Be Determined crc

Reported by Franz Detro <franz.detro@…>, 2 years ago.

Description

With MSVC in debug mode and runtime checks enabled, we encounter an issue in crc.hpp.

Please find attached a simple patch against boost 1.51.0 which fixes this issue.

#7434 Lock used in flyweight causes erroneous "unused variable" warning when compiling with clang new joaquin Bugs To Be Determined flyweight

Reported by Pierre Imai <pierre.imai@…>, 2 years ago.

Description

The lock functionality in boost/flyweight/detail/flyweight_core.hpp causes the following warning when compiled with "Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)" with option "-Wunused-variable":

In file included from /opt/local/include/boost/flyweight/flyweight.hpp:22:
/opt/local/include/boost/flyweight/detail/flyweight_core.hpp:189:22: error: unused variable 'lock' [-Werror,-Wunused-variable]
    lock_type        lock(mutex());

This problem can be fixed by adding the following code to the file, before / after the corresponding blocks for MSVC

#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
#endif
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#7435 Crash with format using UTF16 strings on MacOS X new samuel_krempp Bugs To Be Determined format

Reported by Franz Detro <franz.detro@…>, 2 years ago.

Description

Due to cross-platform issues with Microsoft Windows, we are using std::strings with unsigned shorts as UTF16 strings.

We experience crashes when using boost::format in combination with these strings.

Please find attach a simple fix which solves this issue for us. We are using this code since some years on Windows and Unix, too, without any negative side-effects.

It would be great if you could double-check this change and commit it to future boost versions.

#7436 Missing python dlls new rwgk Bugs To Be Determined Python

Reported by habdank@…, 2 years ago.

Description

Dears,

When I am building boost 1.50 using:

b2 --toolset=msvc-9.0 --build-type=complete --without-mpi --build-dir=..\lib_msvc9_x86_p26 --stagedir=..\lib_msvc9_x86_p26 install

boost-python dlls are not created. in version 1.45 they had been created.

How can I build boost-python dlls? There are boost python static libs. There are other dlls present (e.g. boost-system), so it is rather boost-python package problem or special case of boost build tool chain.

Also there is general problem that mentioned commanline options are not creating delivery folder with all important binaries as it was in the past.

Regards, Seweryn Habdank-Wojewodzki.

#7440 boost::filesystem compile error on solaris 10 new bemandawes Bugs To Be Determined filesystem

Reported by aleksandar.vukajlovic@…, 2 years ago.

Description

It fails to compile on gcc 4.7.2 with compile flags cxxflags=-std=c++0x

libs/filesystem/src/operations.cpp: In function 'void boost::filesystem::detail: :permissions(const boost::filesystem::path&, boost::filesystem::perms, boost::system::error_code*)': libs/filesystem/src/operations.cpp:1412:11: error: '::fchmodat' has not been declared

in line 1410 there is:

&& !(defined(__SUNPRO_CC) || defined(sun)) \

proper check for solaris would be:

&& !(defined(__SUNPRO_CC) || defined(sun) || defined(__sun)) \
#7450 Buggy rounded_arith.hpp new bgubenko Bugs To Be Determined interval

Reported by Luca Di Gaspero <l.digaspero@…>, 2 years ago.

Description

The rounded_arith file is currently buggy, because it misses an explicit this-> to some function calls (due to the evolution in template compilation of g++ since version 4.0). I attach the small patch to get it working.

#7451 clang-linux.jam : cflags/cxxflags feature is added twice to compiler's command line (other features possibly as well) new vladimir_prus Bugs To Be Determined build

Reported by oakad@…, 2 years ago.

Description

The crux of the issue appears to be here:

--- clang-linux.jam.orig 2012-10-01 20:31:55.253818173 +1000 +++ clang-linux.jam 2012-10-01 20:29:05.048627617 +1000 @@ -66,8 +66,8 @@

############################################################################### # Flags

-toolset.flags clang-linux.compile OPTIONS <cflags> ; -toolset.flags clang-linux.compile OPTIONS <cxxflags> ; +#toolset.flags clang-linux.compile OPTIONS <cflags> ; +#toolset.flags clang-linux.compile OPTIONS <cxxflags> ;

toolset.flags clang-linux.compile OPTIONS <optimization>off : ; toolset.flags clang-linux.compile OPTIONS <optimization>speed : -O3 ;

Flags are apparently already added by the "base" module and then again by the inherited one (does it make sense?).

#7453 Dead link in date::time docs new az_sw_dude Bugs To Be Determined date_time

Reported by wlandry@…, 2 years ago.

Description

In the list of references

 http://boost-sandbox.sourceforge.net/doc/html/date_time/details.html#date_time.references

the link to Will Linden's list of calendar links

 http://www.ecben.net/calendar.shtml

is a dead link.

#7460 owi_mt_tests.cpp:89: error: 'TIME_UTC' is not a member of 'boost' new djowel Bugs To Be Determined spirit

Reported by greg.nowakowski@…, 2 years ago.

Description

Release 1.50.0 is not compiling on Linux with gcc-4.1.2 when running boost_1_50_0/libs/spirit/classic/test test.

Test run using command:

../../../../bjam -a >test.result

Here is the problem:

gcc.compile.c++ ../../../../bin.v2/libs/spirit/classic/test/owi_mt_tests.test/gcc-4.1.2/debug/threading-multi/owi_mt_tests.o
owi_mt_tests.cpp: In static member function 'static long unsigned int test_task<ClassT>::increase_test_size(long unsigned int)':
owi_mt_tests.cpp:89: error: 'TIME_UTC' is not a member of 'boost'
owi_mt_tests.cpp: In function 'void concurrent_creation_of_objects()':
owi_mt_tests.cpp:190: error: 'TIME_UTC' is not a member of 'boost'

It should be using TIME_UTC_ and not TIME_UTC. I am surprised this bug hasn't been reported before.

Blessings, Greg.

#7472 [Preprocessor] include wstringize.hpp missing in preprocessor.hpp new no-maintainer Bugs To Be Determined preprocessor

Reported by tobias.loew, 2 years ago.

Description

The documentation states that preprocessor.hpp includes the entire library but wstringize.hpp is missing.

#7475 Functions redeclared inline after been called new bemandawes Bugs To Be Determined system

Reported by viboes, 2 years ago.

Description

THe following warnings appear with intel-12.1.3 compiler

../../../boost/system/error_code.hpp(489): remark #522: function "boost::system::error_category::default_error_condition" redeclared "inline" after being called
      inline error_condition error_category::default_error_condition( int ev ) const
                                             ^

../../../boost/system/error_code.hpp(494): remark #522: function "boost::system::error_category::equivalent(int, const boost::system::error_condition &) const" redeclared "inline" after being called
      inline bool error_category::equivalent( int code,
                                  ^

../../../boost/system/error_code.hpp(500): remark #522: function "boost::system::error_category::equivalent(const boost::system::error_code &, int) const" redeclared "inline" after being called
      inline bool error_category::equivalent( const error_code & code,
                                  ^

See the attached patch that solves the issue.

#7477 boost:::format will not compile under VC++ without "Microsoft language extensions" reopened samuel_krempp Bugs To Be Determined format

Reported by Jive Dadson <jdadson@…>, 2 years ago.

Description

Boost::format will not compile under Microsoft VC++ unless Microsoft Language Extensions (/Za) are turned OFF. When MS Language Extensions are turned ON, the compiler complains because boost overrides some virtual functions in std:: classes with functions lacking a "throw()" specifier. One of the functions is the destructor ~basic_streambuf().

I do not know if this is a bug or a misunderstanding on my part. If it is a bug, I do not know whether it is on the MS or boost side. However, it should be a simple matter to decorate those functions with "throw()." That could save someone a lot of trouble.

#7480 Runtime failures in let_tests.test new theller Bugs To Be Determined phoenix

Reported by michel, 2 years ago.

Description

When compiling libs/phoenix/scope/let_tests.cpp on gcc 4.5, 4.7, 4.8 (experimental) and clang 3.0, 3.1, 3.2 (trunk) with optimization flag -O2 or -O3, runtime test failures (i.e. BOOST_TEST failures) occurs. The failures occur both in C++03 and C++11 modes and both with BOOST_RESULT_OF_USE_DECLTYPE and without BOOST_RESULT_OF_USE_DECLTYPE.

lambda_tests.test also generates runtime failures. It fails on gcc 4.6, too. I think there are other failed test cases when compiling with optimization flag -O2 or -O3.

#7481 lambda_tests.test fails to compile with BOOST_RESULT_OF_USE_DECLTYPE new theller Bugs To Be Determined phoenix

Reported by michel, 2 years ago.

Description

#5687 (some evaluation functions do not work with BOOST_RESULT_OF_USE_DECLTYPE) is generally fixed by Eric recently. But libs/phoenix/scope/lambda_tests.cpp fails to compile on gcc 4.4-4.8 and clang 2.8-3.0 with BOOST_RESULT_OF_USE_DECLTYPE. Eric also reported it fails to compile on MSVC with BOOST_RESULT_OF_USE_DECLTYPE.

The compilation succeeds on clang 3.1-3.2 (which have N3276 decltype support).

#7482 Build from source with MinGW on Windows new timblechmann Bugs To Be Determined Building Boost

Reported by RusBaratov@…, 2 years ago.

Description

Hello, I've trying to build boost with mingw, and I've got error, when --layout=system option is used.

check out (with cygwin):

> svn co http://svn.boost.org/svn/boost/trunk boost-trunk
> svnversion
80897

build (windows cmd.exe):

> g++ --version
g++ (Built by MinGW-builds projects) 4.7.1
> cd boost-trunk
> .\bootstrap gcc

build with --layout=tagged works fine:

> .\b2 --toolset=gcc --layout=tagged

but build with --layout=system failed:

> .\b2 --toolset=gcc --layout=system
...
error: Duplicate name of actual target: <pstage\lib>libboost_atomic.a
error: previous virtual target { common%common.copy-libboost_atomic.a.STATIC_LIB { gcc%gcc.archive-libboost_atomic.a.STATIC_LIB { gcc%gcc.compile.c++-
lockpool.o.OBJ { lockpool.cpp.CPP } } } }
error: created from ./stage-proper
error: another virtual target { common%common.copy-libboost_atomic.a.STATIC_LIB { gcc%gcc.archive-libboost_atomic.a.STATIC_LIB { gcc%gcc.compile.c++-l
ockpool.o.OBJ { lockpool.cpp.CPP } } } }
error: created from ./stage-proper
error: added properties: <debug-symbols>off <define>NDEBUG <inlining>full <optimization>speed <runtime-debugging>off <variant>release
error: removed properties: <debug-symbols>on <inlining>off <optimization>off <runtime-debugging>on <variant>debug
M:/boost-trunk/tools/build/v2/build\virtual-target.jam:491: in actualize-no-scanner from module object(file-target)@4808
M:/boost-trunk/tools/build/v2/build\virtual-target.jam:134: in object(file-target)@4808.actualize from module object(file-target)@4808
M:/boost-trunk/tools/build/v2\build-system.jam:736: in load from module build-system
M:\boost-trunk\tools\build\v2/kernel\modules.jam:289: in import from module modules
M:\boost-trunk\tools\build\v2/kernel/bootstrap.jam:139: in boost-build from module
M:\boost-trunk\boost-build.jam:17: in module scope from module
#7494 boost::replace_all is very slow on debug build when Format size is big assigned marshall Bugs To Be Determined string_algo

Reported by Jan Vonasek <jan.vonasek@…>, 2 years ago.

Description

Method boost::replace_all(SequenceT& Input, const Range1T& Search, const Range2T& Format) on debug build takes very long time when Format size is about 300k. On call stack I can see push_front for every char.

When I use std::find and std::replace in loop it is cca 10 times faster.

I have Boost library 1.45, Visual Studio 2010, Win7 x64 SP1, 6-core CPU.

#7502 Planarity test runs in quadratic time on some graphs new jewillco Bugs To Be Determined graph

Reported by Jan Hązła <jan.hazla@…>, 2 years ago.

Description

The planarity test in the graph library (boyer_myrvold_planarity_test) seems to run in quadratic time for a certain class of graph.

I attached a program that demonstrates the problem. The program reads number N from stdin, generates a certain graph and runs the planarity test on it.

The graph is a bipartite graph K_{2,n} with some additional edges -- specifically, 2 "left" vertices of the bipartite graph are connected with an edge and n "right" vertices form a path. Note that the order of edge insertion matters -- the problem disappears if we change it.

Unfortunately I don't understand the planarity test enough to fix the problem. What I established (and what makes me believe it runs in quadratic time) is that for my graph in function walkdown (in planar_details/boyer_myrvold_impl.hpp; I understand the function is called once for each vertex) there is a loop on line 663 that is executed k times when the function was called for (k+1)-th time. This loop seems to have to do with Kuratowski subgraph detection, but I can't say anything more about it.

My configuration is Mac OS 10.8 with MacPorts?, g++ 4.7 and boost 1.51. I also reproduced it on some Linux and Windows configurations.

#7504 boost::interprocess::basic_vectorbuf calls std::char_traits<char>::pbump() with potentially mismatching data type new igaztanaga Bugs To Be Determined interprocess

Reported by mbradshaw@…, 2 years ago.

Description

boost::interprocess::basic_vectorbuf::seekoff() makes a call to base_t::pbump(), but the datatypes (may) mismatch for the parameter (and do on my system). std::char_traits<char>::pbump() takes an int (according to the standard), but basic_vectorbuf() is passing it a value of type CharTraits::off_type, which is implementation defined. Since std::char_traits<char>::off_type is __int64 on my system, I am getting a warning about a conversion from __int64 to int.

I don't know what the most appropriate solution is (maybe just a static_cast), but it would be nice to have this resolved so I can get back down to 0 warnings in my codebase.

I am using Visual Studio 2010 and the latest Boost (and I just check svn trunk and it has the same issue). I get this warning when creating a boost::interprocess::basic_vectorstream like so:

basic_vectorstream<std::vector<char>, std::char_traits<char>> vs;

#7506 unique_path Fails on Windows for Temporary User Profiles new bemandawes Bugs To Be Determined filesystem

Reported by steve@…, 2 years ago.

Description

boost::filesystem::unique_path is failing on Windows if the user has a temporary (read-only) profile (e.g. guest account). I have tracked the problem down to a failure in libs/filesystem/src/unique_path.cpp when it calls CryptAcquireContextW.

CryptAcquireContextW is failing with the arguments used. It appears that this is by design, for read-only profiles. See  http://blogs.msdn.com/b/alejacma/archive/2007/10/23/rsacryptoserviceprovider-fails-when-used-with-mandatory-profiles.aspx for some background information.

I have modified the dwFlags argument of both calls to CryptAcquireContextW, adding CRYPT_VERIFYCONTEXT | CRYPT_SILENT and it is now working for me. I'm no expert on the Win32 crypto API so I'm not sure if this is a valid solution in all contexts.

#7507 BGL subgraph copy constructor buggy new jewillco Bugs To Be Determined graph

Reported by Amyn Bennamane <amynbe@…>, 2 years ago.

Description

Hello,

I store subgraph objects in a std::list.

After this, most of the data contained in subgraphs are lost.

Attached is a minimalist code that creates a root graph and two childen, and then displays them directly, then insert them into a (copy-on-write) list, then displays them again.

The root redisplays too much, and children lose data.

I am on MacOSX with gcc 6; maybe on other platforms the copy would not happen, since I don't modify the graphs between insertion and display.

Here is my output:

From the stack: 
(root) graph: 6(0,2) 4(1,2) 
num_edges= 2
subgraph: 0(0,1) 
num_edges= 1
subgraph: 0(0,1) 
num_edges= 1

From list: 
graph: 0(0,1) 1(1,2) 2(1,3) 6(2,5) 3(4,1) 4(4,5) 5(5,3) 
num_edges= 7
graph: 
num_edges= 0
graph: 
num_edges= 0
#7508 Boost timezonedb incorrect Brazil DST specification new az_sw_dude Bugs To Be Determined date_time

Reported by anonymous, 2 years ago.

Description

Today our applications running in Brazil have the incorrect time. We tracked it down to an error in the boost date_time_zonespec.csv specification for America/Sao_Paulo. It specifies that the DST change starts on the second Sunday of October (yesterday). However, it actually starts on the third Sunday (see the attached document from exchange). I downloaded the latest version of boost (1.51), and it is also incorrect there. Also note that Linux does have the correct time. I intend to submit a bug report to Boost, but I don’t know if you prefer if the external communication to go through your team.

Incorrect: "America/Sao_Paulo","BRT","BRT","BRST","BRST","-03:00:00","+01:00:00","2;0;10","+00:00:00","3;0;2","+00:00:00"

Should be (for all BRST): "America/Sao_Paulo","BRT","BRT","BRST","BRST","-03:00:00","+01:00:00","3;0;10","+00:00:00","3;0;2","+00:00:00"

#7517 indirect_streambuf: invalid state change if write() writes less data then requested new turkanis Bugs To Be Determined iostreams

Reported by Oleg Liatte <oleg.liatte@…>, 2 years ago.

Description

Currently indirect_streambuf::sync_impl() calls setp() to update pbase() without any regard to current pbase() value. With unreliable write() it will lead to buffer consistency loss and data duplication if write() doesn't satisfy request fully two or more times in a row.

As a solution setp() should use pbase() as current buffer begin instead of out().begin(). See patch.

#7520 boost::interprocess::ipcdetail::truncate_file does not support 64bit size new igaztanaga Bugs To Be Determined interprocess

Reported by Dmytro Ovdiienko <dmitriyovdienko@…>, 2 years ago.

Description

As far as truncate_file accepts size_t variable, it will be impossible to re-size file to size greater than 2GB in the x32 application.

Here is signature: inline bool truncate_file (file_handle_t hnd, std::size_t size)

#7522 bootstrap.bat fails when TMP/TEMP folder contains a space in the path on Windows new Bugs To Be Determined Building Boost

Reported by David Hait <dhait@…>, 2 years ago.

Description

To reproduce: (on Windows 7 x64 machine with vs2010)

  1. set TEMP=C:\Program Files\Temp
  2. set TMP=%TEMP%
  3. bootstrap

Gives error. Bootstrap.log shows that "Files\Temp\_CL_xxxx.obj" not found, indicating a problem with ' ' in path.

#7524 Assertion Fail: map/set iterators incompatible (msvc-8) new guwi17 Bugs To Be Determined uBLAS

Reported by jim@…, 2 years ago.

Description

Two regression tests fail in msvc-8 with this error:

Debug Assertion Failed:

xtree line 293: Expression: map/set iterators incompatible

Tests failing:

test3_mvov

test_inplace_solve_mvov

#7533 Quickbook build fails without bjam --hash if filenames are too long new vladimir_prus Bugs Boost 1.52.0 build

Reported by pbristow, 2 years ago.

Description

Quickbook documentation (usually when using both Doxygen and auto-indexing)can cause filenames to become too long so xsltproc fails to process correctly.

A sample of the format of an error message is shown below.

The issue can be triggered by deep nesting of folders, creating very long filename, and will often only occur when autoindex is added with --enable-index (thereby increasing folder depth). The problem was very puzzling to diagnose because it occured with apparently identical files on different systems!

The 'cure' is to use the undocumented bjam --hash option (which compresses the filename).

This ticket is to provide a record of this in Trac and to request that the --hash option be documented.

Building the Odeint docs with automatic index generation enabled. ...patience... ...patience... ...found 1925 targets... ...updating 8 targets... doxygen-action bin\msvc-10.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\reference-xml.xml-dir

<snip>

finished... xslt-xsltproc.windows bin\msvc-10.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\reference-xml.doxygen  file:///I%3A/boost-sandbox/odeint-v2/libs/numeric/odeint/doc/bin/msvc-10.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/reference-xml/index.xml:2067: parser error : Opening and ending tag mismatch: compound line 1792 and doxygenindex </doxygenindex>

#7535 filesystem::path::iterator inconsistency with multiple leading separators new bemandawes Bugs To Be Determined filesystem

Reported by Stefan Große Pawig <boost@…>, 2 years ago.

Description

Iterating backwards through a filesystem::path does not terminate at path::begin() if the path starts with several leading directory separators.

For example:

#include <boost/filesystem.hpp>
#include <iostream>

int main()
{
  boost::filesystem::path p("/////foo");

  boost::filesystem::path::iterator i = p.begin();
  ++i;
  --i;
  std::cout << ((i == p.begin()) ? "same" : "different") << std::endl;
}

Expected output: same
Actual output: different

Looking at the source (filesystem/src/path.cpp), it seems that in path::begin() the iterator's m_pos member is set to the position of the last leading directory separator.

During backward iteration, m_pos is set to 0, though, so the iterator comparison (which involves comparing the m_pos members) yields false.

#7536 Fails to Compile under OSX 10.8 new Bugs Boost.Jam 4.0.0 Building Boost

Reported by roberts@…, 2 years ago.

Description

I am trying to install the Boost libraries on a MacBook? Pro running 10.8. This produces compiler errors. Any help you can give me would be appreciated. The output of ./b2 is below:

Building the Boost C++ Libraries.

Performing configuration checks

  • 32-bit : no
  • 64-bit : yes
  • x86 : yes
  • has_icu builds : no

warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam

  • iconv (libc) : no
  • iconv (separate) : yes
  • icu : no
  • icu (lib64) : no
  • gcc visibility : yes
  • long double support : yes

warning: skipping optional Message Passing Interface (MPI) library. note: to enable MPI support, add "using mpi ;" to user-config.jam. note: to suppress this message, pass "--without-mpi" to bjam. note: otherwise, you can safely ignore this message.

Component configuration:

  • chrono : building
  • context : building
  • date_time : building
  • exception : building
  • filesystem : building
  • graph : building
  • graph_parallel : building
  • iostreams : building
  • locale : building
  • math : building
  • mpi : building
  • program_options : building
  • python : building
  • random : building
  • regex : building
  • serialization : building
  • signals : building
  • system : building
  • test : building
  • thread : building
  • timer : building
  • wave : building

...patience... ...patience... ...patience... ...patience... ...found 8764 targets... ...updating 8 targets... darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi/graphml.o In file included from ./boost/property_tree/xml_parser.hpp:19:0,

from libs/graph/src/graphml.cpp:20:

./boost/property_tree/detail/xml_parser_read_rapidxml.hpp: In function ‘void boost::property_tree::xml_parser::read_xml_internal(std::basic_istream<typename Ptree::key_type::value_type>&, Ptree&, int, const std::string&) [with Ptree = boost::property_tree::basic_ptree<std::basic_string<char>, std::basic_string<char> >, typename Ptree::key_type::value_type = char, typename Ptree::key_type::value_type = char, std::string = std::basic_string<char>]’: ./boost/property_tree/detail/xml_parser_read_rapidxml.hpp:89:10: internal compiler error: Segmentation fault: 11 Please submit a full bug report, with preprocessed source if appropriate. See < http://gcc.gnu.org/bugs.html> for instructions.

"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -gdwarf-2 -fexceptions -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_GRAPH_DYN_LINK=1 -DNDEBUG -I"." -I"libs/graph/src" -c -o "bin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi/graphml.o" "libs/graph/src/graphml.cpp"

...failed darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi/graphml.o... ...skipped <pstage/lib>libboost_graph.dylib for lack of <pbin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi>graphml.o... darwin.link.dll bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/libboost_python.dylib ld: warning: ignoring file /Library/Frameworks/Python?.framework/Versions/2.6/lib/python2.6/config/libpython2.6.dylib, missing required architecture x86_64 in file /Library/Frameworks/Python?.framework/Versions/2.6/lib/python2.6/config/libpython2.6.dylib (2 slices) Undefined symbols for architecture x86_64:

"_PyCallable_Check", referenced from:

boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o boost::python::objects::class_base::make_method_static(char const*) in class.o

"_PyDict_New", referenced from:

boost::python::detail::dict_base::dict_base() in dict.o boost::python::detail::dict_base::dict_base() in dict.o _instance_get_dict in class.o

"_PyType_Ready", referenced from:

boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o _class_setattro in class.o boost::python::objects::static_data() in class.o boost::python::objects::class_metatype() in class.o boost::python::objects::class_type() in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&) in class.o ...

"_PyLong_FromUnsignedLong", referenced from:

boost::python::objects::class_base::set_instance_size(unsigned long) in class.o boost::python::objects::function_doc_signature_generator::parameter_string(boost::python::objects::py_function const&, unsigned long, boost::python::api::object, bool) in function_doc_signature.o boost::python::objects::function_doc_signature_generator::pretty_signature(boost::python::objects::function const*, unsigned long, bool) in function_doc_signature.o

"_PyObject_RichCompare", referenced from:

boost::python::api::operator>(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o boost::python::api::operator>=(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o boost::python::api::operator<(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o boost::python::api::operator<=(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o boost::python::api::operator==(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o boost::python::api::operator!=(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyExc_ValueError", referenced from:

boost::python::handle_exception_impl(boost::function0<void>) in errors.o

"_PyDict_Update", referenced from:

boost::python::detail::dict_base::update(boost::python::api::object const&) in dict.o

"_PyExc_StopIteration", referenced from:

boost::python::objects::stop_iteration_error() in iterator.o

"PyObject_New", referenced from:

boost::python::objects::make_nurse_and_patient(_object*, _object*) in life_support.o

"_PyObject_SetAttr", referenced from:

boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o boost::python::api::setattr(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o boost::python::api::delattr(boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o

"_PyDict_GetItemString", referenced from:

boost::python::detail::wrapper_base::get_override(char const*, _typeobject*) const in wrapper.o

"_PyNumber_InPlaceRemainder", referenced from:

boost::python::api::operator%=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyArg_ParseTupleAndKeywords", referenced from:

_property_init in class.o

"_PyMethod_New", referenced from:

_function_descr_get in function.o

"_PyObject_Size", referenced from:

boost::python::objects::enum_base::export_values() in enum.o boost::python::objects::function::signature(bool) const in function.o boost::python::(anonymous namespace)::instance_reduce(boost::python::api::object) in pickle_support.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, boost::python::converter::(anonymous namespace)::wstring_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::objects::function_doc_signature_generator::parameter_string(boost::python::objects::py_function const&, unsigned long, boost::python::api::object, bool) in function_doc_signature.o boost::python::objects::function_doc_signature_generator::pretty_signature(boost::python::objects::function const*, unsigned long, bool) in function_doc_signature.o boost::python::objects::function_doc_signature_generator::function_doc_signatures(boost::python::objects::function const*) in function_doc_signature.o ...

"_PyList_Sort", referenced from:

boost::python::detail::list_base::sort() in list.o

"_PyCFunction_Type", referenced from:

_function_get_class in function.o

"_PyDict_Values", referenced from:

boost::python::detail::dict_base::values() const in dict.o

"_PyNumber_InPlaceSubtract", referenced from:

boost::python::api::operator-=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyTuple_GetItem", referenced from:

boost::python::objects::function::argument_error(_object*, _object*) const in function.o

"_PyString_Size", referenced from:

boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::python::converter::(anonymous namespace)::string_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyMem_Malloc", referenced from:

boost::python::instance_holder::allocate(_object*, unsigned long, unsigned long) in class.o

"_PyErr_Occurred", referenced from:

boost::python::detail::list_base::insert(boost::python::api::object const&, boost::python::api::object const&) in list.o boost::python::detail::str_base::endswith(boost::python::api::object const&) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&, boost::python::api::object const&) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) const in str.o boost::python::detail::str_base::index(boost::python::api::object const&) const in str.o boost::python::detail::str_base::index(boost::python::api::object const&, boost::python::api::object const&) const in str.o ...

"_PyInt_FromLong", referenced from:

boost::python::numeric::aux::array_base::argmax(long) in numeric.o boost::python::numeric::aux::array_base::argmin(long) in numeric.o boost::python::numeric::aux::array_base::argsort(long) in numeric.o boost::python::numeric::aux::array_base::diagonal(long, long, long) const in numeric.o boost::python::numeric::aux::array_base::trace(long, long, long) const in numeric.o boost::python::numeric::aux::array_base::repeat(boost::python::api::object const&, long) in numeric.o boost::python::numeric::aux::array_base::swapaxes(long, long) in numeric.o ...

"_PyNumber_Subtract", referenced from:

boost::python::api::operator-(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyErr_WarnEx", referenced from:

boost::python::converter::registry::insert(_object* (*)(void const*), boost::python::type_info, _typeobject const* (*)()) in registry.o

"_PySequence_SetSlice", referenced from:

boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o

"_Py_InitModule4_64", referenced from:

boost::python::detail::init_module(char const*, void (*)()) in module.o

"_PyString_FromString", referenced from:

boost::python::detail::str_base::str_base() in str.o boost::python::detail::str_base::str_base() in str.o boost::python::detail::str_base::str_base(char const*) in str.o boost::python::detail::str_base::str_base(char const*) in str.o boost::python::converter::do_return_to_python(char const*) in builtin_converters.o

"_PyType_IsSubtype", referenced from:

boost::python::objects::find_instance_impl(_object*, boost::python::type_info, bool) in class.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<float, boost::python::converter::(anonymous namespace)::float_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<long double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<long double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<float>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o ...

"_PyLong_AsLongLong", referenced from:

boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<long long, boost::python::converter::(anonymous namespace)::long_long_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyLong_AsUnsignedLongLong", referenced from:

boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned long long, boost::python::converter::(anonymous namespace)::unsigned_long_long_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyRun_FileExFlags", referenced from:

boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o

"_PyObject_IsInstance", referenced from:

boost::python::numeric::aux::array_object_manager_traits::check(_object*) in numeric.o boost::python::pytype_check(_typeobject*, _object*) in from_python.o _class_setattro in class.o boost::python::objects::module_prefix() in class.o

"_PyErr_Clear", referenced from:

boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o _instance_new in class.o boost::python::objects::function::call(_object*, _object*) const in function.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o boost::python::api::getattr(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&, char const*, boost::python::api::object const&) in object_protocol.o

"_PyMethod_Type", referenced from:

boost::python::detail::wrapper_base::get_override(char const*, _typeobject*) const in wrapper.o

"_PyNumber_InPlaceAdd", referenced from:

boost::python::api::operator+=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyString_InternFromString", referenced from:

_function_get_name in function.o

"_PyFile_AsFile", referenced from:

boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o

"_PyObject_GetItem", referenced from:

boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o boost::python::api::getitem(boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o boost::python::api::getslice(boost::python::api::object const&, boost::python::handle<_object> const&, boost::python::handle<_object> const&) in object_protocol.o

"_PyType_GenericAlloc", referenced from:

boost::python::objects::class_type_object in class.o

"_PyImport_Import", referenced from:

boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o

"_PyClass_Type", referenced from:

boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o

"_PyLong_AsUnsignedLong", referenced from:

boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned char, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned char> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned short, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned short> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned int, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned int> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned long, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned long> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"PyType_Lookup", referenced from:

_class_setattro in class.o

"_PyNumber_InPlaceLshift", referenced from:

boost::python::api::operator<<=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyLong_Type", referenced from:

boost::python::detail::long_base::call(boost::python::api::object const&) in long.o boost::python::detail::long_base::call(boost::python::api::object const&, boost::python::api::object const&) in long.o boost::python::detail::long_base::long_base() in long.o boost::python::detail::long_base::long_base() in long.o boost::python::detail::long_base::long_base(boost::python::api::object const&) in long.o boost::python::detail::long_base::long_base(boost::python::api::object const&) in long.o boost::python::detail::long_base::long_base(boost::python::api::object const&, boost::python::api::object const&) in long.o ...

"_PyNumber_InPlaceDivide", referenced from:

boost::python::api::operator/=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyDict_Size", referenced from:

boost::python::objects::function::call(_object*, _object*) const in function.o

"_PyObject_ClearWeakRefs", referenced from:

_instance_dealloc in class.o

"_PyExc_RuntimeError", referenced from:

_no_init in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o boost::python::detail::pure_virtual_called() in function.o boost::python::(anonymous namespace)::instance_reduce(boost::python::api::object) in pickle_support.o boost::python::handle_exception_impl(boost::function0<void>) in errors.o

"_PyList_New", referenced from:

boost::python::detail::list_base::list_base() in list.o boost::python::detail::list_base::list_base() in list.o

"_PyNumber_Lshift", referenced from:

boost::python::api::operator<<(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyTuple_Type", referenced from:

boost::python::detail::tuple_base::call(boost::python::api::object const&) in tuple.o boost::python::detail::tuple_base::tuple_base(boost::python::api::object const&) in tuple.o boost::python::detail::tuple_base::tuple_base(boost::python::api::object const&) in tuple.o global constructors keyed to tuple.cpp in tuple.o boost::python::detail::converter_target_type<boost::python::to_python_value<boost::python::tuple const&> >::get_pytype() in pickle_support.o

"_PyNumber_Divide", referenced from:

boost::python::api::operator/(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyErr_ExceptionMatches", referenced from:

boost::python::api::getattr(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&, char const*, boost::python::api::object const&) in object_protocol.o

"Py_NoneStruct", referenced from:

global constructors keyed to numeric.cpp in numeric.o global constructors keyed to list.cpp in list.o global constructors keyed to long.cpp in long.o boost::python::detail::dict_base::get(boost::python::api::object const&) const in dict.o global constructors keyed to dict.cpp in dict.o global constructors keyed to tuple.cpp in tuple.o global constructors keyed to str.cpp in str.o ...

"_PyRun_StringFlags", referenced from:

boost::python::eval(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec_statement(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o

"_PyString_FromStringAndSize", referenced from:

boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o boost::python::detail::str_base::str_base(char const*, char const*) in str.o boost::python::detail::str_base::str_base(char const*, char const*) in str.o boost::python::detail::str_base::str_base(char const*, unsigned long) in str.o boost::python::detail::str_base::str_base(char const*, unsigned long) in str.o boost::python::converter::do_return_to_python(char) in builtin_converters.o boost::python::tuple boost::python::make_tuple<boost::python::str, boost::python::api::object, boost::python::str, boost::python::str, boost::python::str, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >(boost::python::str const&, boost::python::api::object const&, boost::python::str const&, boost::python::str const&, boost::python::str const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in function_doc_signature.o ...

"_PyList_Append", referenced from:

boost::python::detail::list_base::append(boost::python::api::object const&) in list.o

"_PyTuple_New", referenced from:

boost::python::detail::tuple_base::tuple_base() in tuple.o boost::python::detail::tuple_base::tuple_base() in tuple.o boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::function::function(boost::python::objects::py_function const&, boost::python::detail::keyword const*, unsigned int) in function.o boost::python::objects::function::function(boost::python::objects::py_function const&, boost::python::detail::keyword const*, unsigned int) in function.o boost::python::objects::function::signature(bool) const in function.o ...

"_PyNumber_InPlaceRshift", referenced from:

boost::python::api::operator>>=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyDict_GetItem", referenced from:

boost::python::detail::dict_base::get(boost::python::api::object const&) const in dict.o boost::python::objects::function::call(_object*, _object*) const in function.o

"_PyObject_DelItem", referenced from:

boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::delitem(boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o

"_PyNumber_InPlaceAnd", referenced from:

boost::python::api::operator&=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyObject_GetAttr", referenced from:

boost::python::api::getattr(boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o

"_PyType_Type", referenced from:

boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o _class_setattro in class.o boost::python::objects::static_data() in class.o boost::python::objects::class_metatype() in class.o boost::python::objects::class_type() in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&) in class.o ...

"_PyExc_ImportError", referenced from:

boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o

"_PyEval_GetGlobals", referenced from:

boost::python::eval(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec_statement(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o

"_PyNumber_Rshift", referenced from:

boost::python::api::operator>>(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyList_Reverse", referenced from:

boost::python::detail::list_base::reverse() in list.o

"_PyMem_Free", referenced from:

_instance_dealloc in class.o boost::python::instance_holder::deallocate(_object*, void*) in class.o

"_PyString_Type", referenced from:

boost::python::detail::str_base::call(boost::python::api::object const&) in str.o boost::python::detail::str_base::str_base(boost::python::api::object const&) in str.o boost::python::detail::str_base::str_base(boost::python::api::object const&) in str.o global constructors keyed to str.cpp in str.o boost::python::converter::(anonymous namespace)::string_rvalue_from_python::get_pytype() in builtin_converters.o boost::python::converter::wrap_pytype<&PyString_Type>::get_pytype() in builtin_converters.o

"_PyExc_TypeError", referenced from:

boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&, char const*) in from_python.o boost::python::converter::rvalue_result_from_python(_object*, boost::python::converter::rvalue_from_python_stage1_data&) in from_python.o boost::python::converter::rvalue_from_python_stage2(_object*, boost::python::converter::rvalue_from_python_stage1_data&, boost::python::converter::registration const&) in from_python.o boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&) in from_python.o boost::python::converter::throw_no_reference_from_python(_object*, boost::python::converter::registration const&) in from_python.o boost::python::pytype_check(_typeobject*, _object*) in from_python.o boost::python::converter::registration::get_class_object() const in registry.o ...

"_PyUnicodeUCS2_FromEncodedObject", referenced from:

_encode_string_unaryfunc in builtin_converters.o

"_PyNumber_InPlaceXor", referenced from:

boost::python::api::operator=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PyProperty_Type", referenced from:

_class_setattro in class.o boost::python::objects::static_data() in class.o boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&, char const*) in class.o boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&, boost::python::api::object const&, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&, boost::python::api::object const&) in class.o

"_PyBool_FromLong", referenced from:

boost::python::numeric::aux::array_base::factory(boost::python::api::object const&, boost::python::api::object const&, bool, bool, boost::python::api::object, boost::python::api::object) in numeric.o boost::python::objects::class_base::enable_pickling_(bool) in class.o

"_PyNumber_Add", referenced from:

boost::python::api::operator+(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyErr_NoMemory", referenced from:

boost::python::handle_exception_impl(boost::function0<void>) in errors.o

"_PyFile_FromString", referenced from:

boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o

"_PyInt_Type", referenced from:

_enum_str in enum.o boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o boost::python::converter::(anonymous namespace)::signed_int_rvalue_from_python_base::get_pytype() in builtin_converters.o boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python_base::get_pytype() in builtin_converters.o

"_PyNumber_InPlaceMultiply", referenced from:

boost::python::api::operator*=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PySequence_GetSlice", referenced from:

boost::python::api::getslice(boost::python::api::object const&, boost::python::handle<_object> const&, boost::python::handle<_object> const&) in object_protocol.o

"_PyBool_Type", referenced from:

boost::python::converter::(anonymous namespace)::bool_rvalue_from_python::get_pytype() in builtin_converters.o

"_PyExc_ReferenceError", referenced from:

boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&, char const*) in from_python.o

"_PyDict_Copy", referenced from:

boost::python::detail::dict_base::copy() in dict.o

"Py_NotImplementedStruct", referenced from:

boost::python::objects::(anonymous namespace)::not_implemented(_object*, _object*) in function.o

"_PyModule_Type", referenced from:

boost::python::objects::module_prefix() in class.o

"_PyComplex_Type", referenced from:

boost::python::converter::(anonymous namespace)::complex_rvalue_from_python::get_pytype() in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<long double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<float>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<float>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<long double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o ...

"_PyObject_IsTrue", referenced from:

boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o boost::python::objects::enum_base::to_python(_typeobject*, long) in enum.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o _function_get_doc in function.o boost::python::objects::function::signature(bool) const in function.o boost::python::objects::function::add_overload(boost::python::handle<boost::python::objects::function> const&) in function.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o ...

"_PyNumber_Remainder", referenced from:

boost::python::api::operator%(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyComplex_ImagAsDouble", referenced from:

boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<float>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<long double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyWeakref_NewRef", referenced from:

boost::python::objects::make_nurse_and_patient(_object*, _object*) in life_support.o

"_PyList_Insert", referenced from:

boost::python::detail::list_base::insert(long, boost::python::api::object const&) in list.o

"_PyNumber_Multiply", referenced from:

boost::python::api::operator*(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyImport_ImportModule", referenced from:

boost::python::import(boost::python::str) in import.o

"_PyExc_OverflowError", referenced from:

boost::python::handle_exception_impl(boost::function0<void>) in errors.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned char, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned char> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned short, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned short> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned int, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned int> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned long, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned long> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyErr_SetString", referenced from:

_no_init in class.o _static_data_descr_set in class.o _function_get_module in function.o boost::python::detail::pure_virtual_called() in function.o boost::python::(anonymous namespace)::instance_reduce(boost::python::api::object) in pickle_support.o boost::python::handle_exception_impl(boost::function0<void>) in errors.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<unsigned char, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python<unsigned char> >::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o ...

"_PyInt_AsLong", referenced from:

boost::python::detail::list_base::index(boost::python::api::object const&) const in list.o boost::python::detail::list_base::insert(boost::python::api::object const&, boost::python::api::object const&) in list.o boost::python::detail::list_base::count(boost::python::api::object const&) const in list.o boost::python::detail::str_base::endswith(boost::python::api::object const&) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&, boost::python::api::object const&) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) const in str.o ...

"_PySequence_DelSlice", referenced from:

boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o

"_PyIter_Next", referenced from:

boost::python::objects::stl_input_iterator_impl::stl_input_iterator_impl(boost::python::api::object const&) in stl_iterator.o boost::python::objects::stl_input_iterator_impl::stl_input_iterator_impl(boost::python::api::object const&) in stl_iterator.o boost::python::objects::stl_input_iterator_impl::increment() in stl_iterator.o

"_PyErr_SetObject", referenced from:

boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&, char const*) in from_python.o boost::python::converter::rvalue_result_from_python(_object*, boost::python::converter::rvalue_from_python_stage1_data&) in from_python.o boost::python::converter::rvalue_from_python_stage2(_object*, boost::python::converter::rvalue_from_python_stage1_data&, boost::python::converter::registration const&) in from_python.o boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&) in from_python.o boost::python::converter::throw_no_reference_from_python(_object*, boost::python::converter::registration const&) in from_python.o boost::python::converter::registration::to_python(void const volatile*) const in registry.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o ...

"_PyDict_Keys", referenced from:

boost::python::detail::dict_base::keys() const in dict.o

"_PyBaseObject_Type", referenced from:

boost::python::objects::class_type() in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o

"_PyString_FromFormat", referenced from:

boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&, char const*) in from_python.o boost::python::converter::rvalue_result_from_python(_object*, boost::python::converter::rvalue_from_python_stage1_data&) in from_python.o boost::python::converter::rvalue_from_python_stage2(_object*, boost::python::converter::rvalue_from_python_stage1_data&, boost::python::converter::registration const&) in from_python.o boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&) in from_python.o boost::python::converter::throw_no_reference_from_python(_object*, boost::python::converter::registration const&) in from_python.o boost::python::converter::registration::to_python(void const volatile*) const in registry.o _enum_repr in enum.o ...

"_PyExc_AttributeError", referenced from:

_static_data_descr_set in class.o _function_get_module in function.o boost::python::api::getattr(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&, char const*, boost::python::api::object const&) in object_protocol.o

"_PyObject_CallMethod", referenced from:

boost::python::detail::str_base::capitalize() const in str.o boost::python::detail::str_base::center(boost::python::api::object const&) const in str.o boost::python::detail::str_base::expandtabs() const in str.o boost::python::detail::str_base::expandtabs(boost::python::api::object const&) const in str.o boost::python::detail::str_base::join(boost::python::api::object const&) const in str.o boost::python::detail::str_base::ljust(boost::python::api::object const&) const in str.o boost::python::detail::str_base::lower() const in str.o ...

"_PyStaticMethod_New", referenced from:

boost::python::objects::class_base::make_method_static(char const*) in class.o

"_PyErr_Format", referenced from:

boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o boost::python::pytype_check(_typeobject*, _object*) in from_python.o boost::python::converter::registration::get_class_object() const in registry.o boost::python::objects::class_base::make_method_static(char const*) in class.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o

"_PyObject_SetItem", referenced from:

boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::setitem(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in object_protocol.o

"_PyFloat_Type", referenced from:

boost::python::converter::(anonymous namespace)::float_rvalue_from_python::get_pytype() in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<float, boost::python::converter::(anonymous namespace)::float_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<long double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<long double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<float>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::convertible(_object*) in builtin_converters.o ...

"PyEval_SliceIndex", referenced from:

boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::getslice(boost::python::api::object const&, boost::python::handle<_object> const&, boost::python::handle<_object> const&) in object_protocol.o

"_PyObject_CallFunction", referenced from:

boost::python::detail::list_base::call(boost::python::api::object const&) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&) in list.o boost::python::detail::long_base::call(boost::python::api::object const&) in long.o boost::python::detail::long_base::call(boost::python::api::object const&, boost::python::api::object const&) in long.o boost::python::detail::long_base::long_base() in long.o boost::python::detail::long_base::long_base() in long.o ...

"_PyNumber_Or", referenced from:

boost::python::api::operator|(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyUnicodeUCS2_AsWideChar", referenced from:

boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, boost::python::converter::(anonymous namespace)::wstring_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyDict_Items", referenced from:

boost::python::detail::dict_base::items() const in dict.o

"_PyDict_Type", referenced from:

boost::python::detail::dict_base::call(boost::python::api::object const&) in dict.o boost::python::detail::dict_base::dict_base(boost::python::api::object const&) in dict.o boost::python::detail::dict_base::dict_base(boost::python::api::object const&) in dict.o boost::python::detail::dict_base::clear() in dict.o boost::python::detail::dict_base::copy() in dict.o boost::python::detail::dict_base::get(boost::python::api::object const&) const in dict.o boost::python::detail::dict_base::items() const in dict.o ...

"_PyObject_SetAttrString", referenced from:

boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&, char const*) in class.o boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&, boost::python::api::object const&, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&, boost::python::api::object const&) in class.o boost::python::objects::class_base::setattr(char const*, boost::python::api::object const&) in class.o boost::python::objects::class_base::def_no_init() in class.o boost::python::objects::class_base::enable_pickling_(bool) in class.o ...

"_PyExc_IndexError", referenced from:

boost::python::handle_exception_impl(boost::function0<void>) in errors.o

"_PyNumber_And", referenced from:

boost::python::api::operator&(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyObject_GetAttrString", referenced from:

boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o _enum_repr in enum.o _instance_new in class.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o boost::python::api::getattr(boost::python::api::object const&, char const*) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&, char const*, boost::python::api::object const&) in object_protocol.o boost::python::detail::wrapper_base::get_override(char const*, _typeobject*) const in wrapper.o ...

"_PyString_AsString", referenced from:

_enum_repr in enum.o boost::python::converter::(anonymous namespace)::convert_to_cstring(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::python::converter::(anonymous namespace)::string_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyStaticMethod_Type", referenced from:

boost::python::objects::function::add_to_namespace(boost::python::api::object const&, char const*, boost::python::api::object const&, char const*) in function.o

"_PyCFunction_NewEx", referenced from:

boost::python::objects::class_base::def_no_init() in class.o

"_PyList_Type", referenced from:

boost::python::detail::list_base::call(boost::python::api::object const&) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&) in list.o boost::python::detail::list_base::append(boost::python::api::object const&) in list.o boost::python::detail::list_base::insert(long, boost::python::api::object const&) in list.o boost::python::detail::list_base::reverse() in list.o boost::python::detail::list_base::sort() in list.o ...

"_PyErr_NewException", referenced from:

boost::python::objects::function::argument_error(_object*, _object*) const in function.o

"_PyDict_Clear", referenced from:

boost::python::detail::dict_base::clear() in dict.o

"_PyUnicode_Type", referenced from:

boost::python::converter::(anonymous namespace)::wstring_rvalue_from_python::get_pytype() in builtin_converters.o

"_PyComplex_RealAsDouble", referenced from:

boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<float>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python<std::complex<long double>, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python>::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o

"_PyTuple_Size", referenced from:

boost::python::objects::function::argument_error(_object*, _object*) const in function.o boost::python::objects::function::call(_object*, _object*) const in function.o

"_PyNumber_Xor", referenced from:

boost::python::api::operator(boost::python::api::object const&, boost::python::api::object const&) in object_operators.o

"_PyEval_CallFunction", referenced from:

boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&, boost::python::api::object const&) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&, boost::python::api::object const&) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&, boost::python::api::object const&) in numeric.o ...

"_PyNumber_InPlaceOr", referenced from:

boost::python::api::operator|=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o

"_PySlice_New", referenced from:

boost::python::detail::slice_base::slice_base(_object*, _object*, _object*) in slice.o boost::python::detail::slice_base::slice_base(_object*, _object*, _object*) in slice.o boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::getslice(boost::python::api::object const&, boost::python::handle<_object> const&, boost::python::handle<_object> const&) in object_protocol.o

ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status

"g++" -dynamiclib -Wl,-single_module -install_name "libboost_python.dylib" -L"/Library/Frameworks/Python?.framework/Versions/2.6/lib" -L"/Library/Frameworks/Python?.framework/Versions/2.6/lib/python2.6/config" -o "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/libboost_python.dylib" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/numeric.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/list.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/long.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/dict.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/tuple.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/str.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/slice.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/from_python.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/registry.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/type_id.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/enum.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/class.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/function.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/inheritance.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/life_support.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/pickle_support.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/errors.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/module.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/builtin_converters.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/arg_to_python_base.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/iterator.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/stl_iterator.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object_protocol.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object_operators.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/wrapper.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/import.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/exec.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/function_doc_signature.o" -lpython2.6 -headerpad_max_install_names -Wl,-dead_strip -no_dead_strip_inits_and_terms

...failed darwin.link.dll bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/libboost_python.dylib... ...skipped <pstage/lib>libboost_python.dylib for lack of <pbin.v2/libs/python/build/darwin-4.5.0/release/threading-multi>libboost_python.dylib... darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi/graphml.o In file included from ./boost/property_tree/xml_parser.hpp:19:0,

from libs/graph/src/graphml.cpp:20:

./boost/property_tree/detail/xml_parser_read_rapidxml.hpp: In function ‘void boost::property_tree::xml_parser::read_xml_internal(std::basic_istream<typename Ptree::key_type::value_type>&, Ptree&, int, const std::string&) [with Ptree = boost::property_tree::basic_ptree<std::basic_string<char>, std::basic_string<char> >, typename Ptree::key_type::value_type = char, typename Ptree::key_type::value_type = char, std::string = std::basic_string<char>]’: ./boost/property_tree/detail/xml_parser_read_rapidxml.hpp:89:10: internal compiler error: Segmentation fault: 11 Please submit a full bug report, with preprocessed source if appropriate. See < http://gcc.gnu.org/bugs.html> for instructions.

"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -gdwarf-2 -fexceptions -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"." -I"libs/graph/src" -c -o "bin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi/graphml.o" "libs/graph/src/graphml.cpp"

...failed darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi/graphml.o... ...skipped <pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi>libboost_graph.a(clean) for lack of <pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi>graphml.o... ...skipped <pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi>libboost_graph.a for lack of <pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi>graphml.o... ...skipped <pstage/lib>libboost_graph.a for lack of <pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi>libboost_graph.a... ...failed updating 3 targets... ...skipped 5 targets...

#7538 boost::spirit::istream_iterator does not handle incrememt correctly at the end new djowel Bugs To Be Determined spirit

Reported by zhuo.qiang@…, 2 years ago.

Description

boost::spirit::istream_iterator (or its super class multi_pass )does not handle incrememt correctly at the end position. One more end char will be yielded which is incorrect:

#include <sstream>
#include <boost/spirit/include/support_istream_iterator.hpp>
#include <boost/test/minimal.hpp>

int test_main(int, char*[])
{
    std::istringstream in("12");
    boost::spirit::istream_iterator it(in), end;

    BOOST_CHECK(*it++ == '1');
    BOOST_CHECK(*it++ == '2');

    // it should be end now, however it failed
    BOOST_CHECK(it == end); // !failed here
    // and yield the last char once more
    BOOST_CHECK(*it != '2'); // !failed here

    // only after another dereference will it really equal to end
    BOOST_CHECK(it == end);

    return 0;
}

The output is:

test.cpp(14): test it == end failed in function: 'int test_main(int, char **)'
test.cpp(16): test *it != '2' failed in function: 'int test_main(int, char **)'

**** 2 errors detected

#6750 may be a duplicated issue.

Reproducable under:

  • Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)
  • Target: x86_64-apple-darwin12.2.0
  • With C++ 11 turn on: "-std=c++11 -stdlib=libc++"
  • Boost 1.52 and Boost Trunk rev.81030

#7539 including spirit multi_pass and info header files caused compile error new djowel Bugs To Be Determined spirit

Reported by zhuo.qiang@…, 2 years ago.

Description

It seems the 2 header files

  • boost/spirit/include/support_info.hpp
  • boost/spirit/include/support_multi_pass.hpp

are not getting along very well using clang and its libc++ under c++11

If the 2 files are included in the same complie unit (either directly or indirectly) like following:

#include <boost/spirit/include/support_info.hpp>
#include <boost/spirit/include/support_multi_pass.hpp>

It will fail the clang with flag '-std=c++11', '-stdlib=libc++'

clang++ -o test.o -c -std=c++11 -stdlib=libc++ -I/Users/qiang/Projects/boost_1_51_0 test.cpp
In file included from test.cpp:1:
In file included from /Users/qiang/Projects/boost_1_51_0/boost/spirit/include/support_info.hpp:15:
In file included from /Users/qiang/Projects/boost_1_51_0/boost/spirit/home/support/info.hpp:19:
/usr/bin/../lib/c++/v1/list:212:9: error: field has incomplete type 'boost::spirit::info'
    _Tp __value_;
        ^
/usr/bin/../lib/c++/v1/type_traits:1889:54: note: in instantiation of template class 'std::__1::__list_node<boost::spirit::info, void *>' requested here
decltype(_VSTD::move(_Tp(_VSTD::declval<_Args>()...)), true_type())
                                                     ^
...

Attachment is the complete error message.

Reproduced in

  • Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)
  • Target: x86_64-apple-darwin12.2.0
  • With C++ 11 turn on: "-std=c++11 -stdlib=libc++" , the 2 flags must be turned on at the same time to reproduce this bug
  • Boost 1.51 and Boost Trunk rev.81030
#7545 filesystem::path::filename() specification wrong? new bemandawes Bugs To Be Determined filesystem

Reported by Stefan Große Pawig <boost@…>, 2 years ago.

Description

According to the definition section of the boost::filesystem documentation,

  • a path consists of a root-name, a root-directory and (as relative-path) a sequence of filenames (all optional)
  • a filename is the name of a file, with slashes explicitly forbidden as part of the filename

With these definitions, paths consisting entirely of root-name and/or root-directory parts (like "//net", "//net/" and "/") do not contain filenames.

On the other hand, the specification of path::filename() says

Returns: empty() ? path() : *--end()

without discrimination between the different parts. Consequently,

  • Path("//net").filename() == Path("//net")
  • Path("/").filename() == Path("/")

instead of the expected empty Path(), and containing the forbidden slash.

Proposed fix:
To become consistent with the definitions, path::filename() should be specified as follows:

Returns: relative_path().empty() ? path() : *--end()

#7548 Impossible to query for std::vector<double> converter registration new rwgk Bugs To Be Determined Python

Reported by Dario Izzo <dario.izzo@…>, 2 years ago.

Description

I have been hitting this wall for some months now and produced some minimalistic code that shows the problem:

#include <boost/python.hpp>
#include <vector>
#include <iostream>


std::vector<double> list_of_doubles() {
	std::vector<double> retval;
	retval.push_back(3);
	retval.push_back(2);
	return retval;
}


// Instantiate the core module.
BOOST_PYTHON_MODULE(boost_debug)
{
//We check if a converter for std::vector has been registered
boost::python::type_info info = boost::python::type_id<std::vector<double> >(); 
const boost::python::converter::registration* reg = boost::python::converter::registry::query(info); 
//We output to screen the result (should be NULL)
std::cout << reg << " ";

//We also expose a function that needs such a conversion (to_python)
using namespace boost::python;
def("list_of_doubles",list_of_doubles);
}

in python:

import boost_debug

and the result (which should be zero) is instead an address: 0x7f9bc3c4c600

Even more absurdly, if we comment the line "def("list_of_doubles",list_of_doubles);" things actually go back to normality.

#7549 uBLAS banded storage does not match common BLAS layout (from netlib) new guwi17 Bugs To Be Determined uBLAS

Reported by guwi17, 2 years ago.

Description

A banded_matrix stores the elements in an unusual way. This makes it impossible to call standard BLAS-libraries with these matrix type.

Example data taken from  http://www.netlib.org/lapack/lug/node124.html

Running banded_matrix < column_major > test
Full matrix
[5,5]((11,12,0,0,0),(21,22,23,0,0),(31,32,33,34,0),(0,42,43,44,45),(0,0,53,54,55))
data() of matrix
0 12 23 34 45 11 22 33 44 55 21 32 43 54 0 31 42 53 0 0
Expected data() of matrix
0 11 21 31 12 22 32 42 23 33 43 53 34 44 54 0 45 55 0 0
Running banded_matrix < row_major > test
Full matrix
[5,5]((11,12,0,0,0),(21,22,23,0,0),(31,32,33,34,0),(0,42,43,44,45),(0,0,53,54,55))
data() of matrix
0 11 21 31 12 22 32 42 23 33 43 53 34 44 54 0 45 55 0 0
Expected data() of matrix
0 0 11 12 0 21 22 23 31 32 33 34 42 43 44 45 53 54 55 0
#7558 MPI missing symbols using serialization's static library design new troyer Bugs To Be Determined mpi

Reported by Brian Barrett <bwbarre@…>, 2 years ago.

Description

On Mac OS X Lion, we're seeing errors when linking our application using Boost.MPI. The application is rather large and uses Boost.Serialization for both checkpoint/restart and MPI communication. The checkpoint/restart bits made serialization a bit of a disaster in terms of compile times (due to headers including basically every other header in the project). To solve that problem, we followed the Boost.Serialization advice on static libraries.

On Lion (and possibly elsewhere, but definitely on Lion) using the gcc front-end (i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)), we're seeing link failures due to serialization calls for MPI archivers not being found when compiling with -O2 or higher on Boost 1.50.0 and 1.51.0:

CXXLD sst.x

Undefined symbols for architecture x86_64:

"void SST::Introspector::serialize<boost::mpi::packed_iarchive>(boost::mpi::packed_iarchive&, unsigned int)", referenced from:

boost::archive::detail::iserializer<boost::mpi::packed_iarchive,

SST::Introspector>::load_object_data(boost::archive::detail::basic_iarchive &, void*, unsigned int) const in introspectedComponent.o

boost::archive::detail::iserializer<boost::mpi::packed_iarchive,

SST::Introspector>::load_object_data(boost::archive::detail::basic_iarchive &, void*, unsigned int) consti n simulation.o

While I could simply explicitly instantiate the missing archivers, that seems like a bad idea for something in the detail namespace and it appears that the list of archivers I'd need to instantiate has changed over time. The mailing list suggested that this sounded like a bug and that I should file a bug report.

I've attached a test case that shows the problem. It's essentially the Boost.Serialization demo_pimpl example, but using MPI instead of a text archiver.

#7560 [preprocessor] empty tuples are reported to have length equal to 1 new no-maintainer Bugs To Be Determined preprocessor

Reported by Bruno Dutra <brunocodutra@…>, 2 years ago.

Description

BOOST_PP_TUPLE_SIZE(()) expands to 1 under gcc with c++0x support enabled

gcc --version gcc (GCC) 4.7.2 Copyright (C) 2012 Free Software Foundation, Inc.

#7561 bzip2_compressor does not play nicely with either direction of filtering_stream new turkanis Bugs To Be Determined iostreams

Reported by Alexander van Gessel (AI0867) <ai0867@…>, 2 years ago.

Description

With boost::iostreams::filtering_stream<boost::iostreams::input>, bzip2_compressor's output is always empty. With boost::iostreams::filtering_stream<boost::iostreams::output>, bzip2_compressor segfaults on an empty input.

I'm attaching a program that on my machine reproduces this issue.

Bugs that seem related: #2411, #3348, #5237

#7563 slex CONTLINE options parse keyword with backslash new hkaiser Bugs To Be Determined wave

Reported by gongyiling3468@…, 2 years ago.

Description

I'm using the slex, wrapped by boost::wave library, and it's very very cool. but I got a problem when using it. that is it seems slex cannot process the following macro correctly:

#define M else\

+1

the macro content is irrelevant, the point is slex treats "else\" as a whole as code detailed in the attachment.

#7564 filesystem::path passed to GTest's assertion leads to stack overflow new bemandawes Bugs To Be Determined filesystem

Reported by oliora@…, 2 years ago.

Description

The following code:

boost::filesystem::path p1("c:\\123"), p2("c:\\987");

ASSERT_EQ(p1, p2);

leads to stack overflow. It's because when GTest prints the assertion values it examines path as a container and try to print its items which are also path instances. This leads to recursion and stack overflow.

Most probably, the problem should be solved at Gtest side, but personal I think the design when path consist of paths (infinite recursion) is not very good and should be fixed.

#7567 Shadow warnings in timer.hpp new bemandawes Bugs To Be Determined timer

Reported by Kenneth Moreland <kmorel@…>, 2 years ago.

Description

This code

#include <boost/timer/timer.hpp>

int main(int, char *[]) { return 0; }

compiled with

gcc -I/path/to/boost -c -Wshadow test.cxx

produces several warnings about shadowed class members:

/opt/local/include/boost/timer/timer.hpp: In member function 'std::string boost::timer::cpu_timer::format(short int, const std::string&) const':
/opt/local/include/boost/timer/timer.hpp:74: warning: declaration of 'format' shadows a member of 'this'
/opt/local/include/boost/timer/timer.hpp: In constructor 'boost::timer::auto_cpu_timer::auto_cpu_timer(std::ostream&, short int, const std::string&)':
/opt/local/include/boost/timer/timer.hpp:103: warning: declaration of 'format' shadows a member of 'this'
/opt/local/include/boost/timer/timer.hpp:103: warning: declaration of 'places' shadows a member of 'this'
/opt/local/include/boost/timer/timer.hpp: In constructor 'boost::timer::auto_cpu_timer::auto_cpu_timer(std::ostream&, const std::string&)':
/opt/local/include/boost/timer/timer.hpp:107: warning: declaration of 'format' shadows a member of 'this'

This was compile on Mac Snow Leopard, gcc 4.2.1 with the boost distribution from MacPorts? (although I doubt any of that matters).

#7568 Unused parameter and shadowed member warnings in errors.hpp new vladimir_prus Bugs To Be Determined program_options

Reported by Kenneth Moreland <kmorel@…>, 2 years ago.

Description

This code

#include <boost/program_options/errors.hpp>

int main(int, char *[]) { return 0; }

compiled with

gcc -I/path/to/boost -c -Wunused-parameter -Wshadow test.cxx

produces a warning about an unused parameter and several warnings about shadowed class members:

/opt/local/include/boost/program_options/errors.hpp:253: warning: unused parameter 'option_name'
/opt/local/include/boost/program_options/errors.hpp: In constructor 'boost::program_options::invalid_syntax::invalid_syntax(boost::program_options::invalid_syntax::kind_t, const std::string&, const std::string&, int)':
/opt/local/include/boost/program_options/errors.hpp:311: warning: declaration of 'kind' shadows a member of 'this'
/opt/local/include/boost/program_options/errors.hpp: In constructor 'boost::program_options::invalid_config_file_syntax::invalid_config_file_syntax(const std::string&, boost::program_options::invalid_syntax::kind_t)':
/opt/local/include/boost/program_options/errors.hpp:331: warning: declaration of 'kind' shadows a member of 'this'
/opt/local/include/boost/program_options/errors.hpp: In constructor 'boost::program_options::invalid_command_line_syntax::invalid_command_line_syntax(boost::program_options::invalid_syntax::kind_t, const std::string&, const std::string&, int)':
/opt/local/include/boost/program_options/errors.hpp:350: warning: declaration of 'kind' shadows a member of 'this'

This was compile on Mac Snow Leopard, gcc 4.2.1 with the boost distribution from macports (although I doubt any of that matters).

#7572 boost::gregorian::to_tm() does not fill in tm_gmtoff and tm_zone fields of the resulting std::tm structure new az_sw_dude Bugs To Be Determined date_time

Reported by izimenkov@…, 2 years ago.

Description

On Fedora 15 (and maybe on other OSes), std::tm contains fields describing the time zone:

#ifdef	__USE_BSD
  long int tm_gmtoff;		/* Seconds east of UTC.  */
  __const char *tm_zone;	/* Timezone abbreviation.  */
#else
  long int __tm_gmtoff;		/* Seconds east of UTC.  */
  __const char *__tm_zone;	/* Timezone abbreviation.  */
#endif

boost::gregorian::to_tm() (and boost::posix_time::to_tm() respectively) does not fill in these fields. So these fields contain garbage. Other code can be misleaded with values of these uninitialized fields.

#7574 Boost iostreams documentation has too many spell misses new turkanis Bugs To Be Determined iostreams

Reported by spe56nw9@…, 2 years ago.

Description

I have listed the spell misses I found in the boost iostreams documentation below (I tried e-mailing Jonathan Turkanis directly, but the e-mail address on the website seems to be not used anymore):

I know this may sound trivial, but I think the overall quality of the site can be improved by fixing spelling errors.

2.1.4. Writing a container_device

indicates how off is interpretted:

characters in the conatiner

The implementation of seek is striaghforward.

2.2.10. Finite State Filters

Boost Metaprogamming library

3.1 Concepts

Boost.Iostreams prvides several

3.3 Generic Streams and Stream Buffers

A C++ standard library charatcer traits type

Assocaites the given instance of T

3.5 Code Conversion

encapulates code conversion

store charatcres

3.6 Asynchronous and Non-Blocking I/O

synchronous and asynychronous

with both aynchronous and non-blocking i/o

3.8 Pipelines

filter-or-device consiting of

3.9 Views

represnt the component

3.10 Exceptions

thrown are propogated by the public

the implementor has a choice

convey aditional information

exception is rasied due

propogated as-is

#7579 whole numbers => natural numbers new fcacciola Bugs To Be Determined numeric

Reported by dave, 2 years ago.

Description

A numeric type is integer if the abstract values it represent are whole numbers.

Should say "natural numbers"

#7580 boost::asio::tcp SEGV after ioservice stopped, restarted and new new chris_kohlhoff Bugs To Be Determined asio

Reported by tobi@…, 2 years ago.

Description

For solarpowerlog [1] I use boost::asio for the communication via TCP/IP. During an implementation of an new feature I experienced an reproducible segfault when during ioservice->poll()

I hope to give enough information to dig into, but if you need some additional information, please let me know.

Please let me also know if I am (unknowingly) misuse or use the library wrongly.

Thanks coldtobi

What I am doing:

The feature is for sharing a TCP/IP connection within several data sources/sinks in the programm. For this implementation every data source can write and receive at abitrary times where sends have priority over receives. This is realized in the way that receives are interrupted if another data source request a write and then the receive is resumed. The handling of the TCP/IP i/o is done in an dedicated thread (I mark this "[T]" below) , the interruption in the "main" process (marked [M])

So basically the programm does: [T] socket->connect() [T] socket->async_write(); (in parallel running a deadline_timer to catch timeouts) [T] socket->read_some(); (in parallel running a deadline_timer to catch timeouts. Later we will socket->read_some again after we know the amount of pending bytes. and read those. But for this report: The interruption (next step) is usually at the first read_some() ) [M] ioservice->stop(); (this aborts the read_some, )

Here the thread making the IO detects that the ioservice has been stopped via ioservice->stopped() and will then abort the current operation, wait for the next request adn before executing this new request it will call ioservice->reset():

[t] ioservice->reset()

As we now close to the crash, I will elabaroate as precise as possible what is done. (This all now is in the I/O thread)

Note: You can find the code at [3]. I add line numbers for better orientation

creating the deadline-timer: (lines 684+)

	deadline_timer timer(*(this->ioservice));
	boost::posix_time::time_duration td = boost::posix_time::millisec(timeout);
	timer.expires_from_now(td);
	timer.async_wait(boost::bind(&boosthelper_set_result, (int*) &result_timer,
			1));

(boosthelper_set_result is defined in line 451 and just set result_timer to 1 if called)

write the bytes: (line 692+)

        
	boost::asio::async_write(*sockt, boost::asio::buffer(s), write_handler);

s is a std::string and contains the data to be sent. max 255 bytes ASCII)

run the ioservice once to either finish the write or the timeout (line 695)

	size_t num = ioservice->run_one(ec);

run_once returns and the evaluation shows that async_write completed -- num!=0 is checked and the result_timer also

Observation: Wireshark shows that the bytes are not transmitted Then the timer is cancelled and its completion handler catched: (line 703+)

 timer.cancel();
 LOGTRACE(logger, __PRETTY_FUNCTION__ << ": still alive 2f");
 ioservice->poll();
 LOGTRACE(logger, __PRETTY_FUNCTION__ << ": still alive 3");

ioservice->poll() is never returning, SEGV is raised here. Unfortunatly the backtrace is also corrupted.

When not calling the ioservice->stop(), the SEGFAULT is gone too. (Confirmed by working around the need to stop the ioservice by just polling with short timeouts)

Testcase Providing a destilled testcase is unfortuantly difficult. However, you can use solarpowerlog to see the issue. I commmited also sample configuration which allows a easy reproduction of the issue. See the git tree here [2].

If you have debian, you can install the build-dependencies by apt-get build-dep solarpowerlog Otherwise configure will tell you about missing deps :-)

git clone  git://solarpowerlog.git.sourceforge.net/gitroot/solarpowerlog/solarpowerlog
cd solarpowerlog 
git checkout 47c079d3409c867287888f47bedb4f05b1c353b5
./bootstrap.sh
./configure --enable-sharedcomms --enable-sputniksimulator --enable-dummyinverter
make 
# in one shell (this one will not crash)
src/solarpowerlog -c tools/sputnik_simulator/solarpowerlog_shared.conf
# in another shell: (this one which will crash)
src/solarpowerlog -c example_confs/solarpowerlog_shared_sim.conf

After some seconds youl'll see the SEGV:

12839 [0x7f2cc3345760] DEBUG inverter.Simulator2.Comms_SharedConnection.SharedTarget null - virtual void CSharedConnectionSlave::Send(ICommand*): work: 0x7f2cb8003550
12839 [0x7f2cc3345760] DEBUG inverter.Simulator2.Comms_SharedConnection.SharedTarget null -  Not atomic 0x7f2cb8003550
12839 [0x7f2cc3345760] DEBUG inverter.Simulator2.Comms_SharedConnection.SharedTarget null - virtual void CSharedConnectionSlave::Send(ICommand*): submitting work: 0x7f2cb8003550
12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - virtual bool CConnectTCPAsio::AbortAll() Aborting 0 backlog entries
12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - virtual bool CConnectTCPAsio::AbortAll() Done
12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - Ticket for this command is: 0 (current ticket is 0)
12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - CSharedConnectionMaster::Send() ICmd: 0x7f2cb8003550
12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - ioservice stopped (1)
12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - Waiting for work
12964 [0x7f2cbfea1700] DEBUG inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - ioservice stopped
12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): now handling: 0x7f2cb8003550
12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 1
12964 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - virtual void CSharedConnectionMaster::ExecuteCommand(const ICommand*) now handling: 0x7f2cb8004460
12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 2
12964 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - virtual void CSharedConnectionMaster::ExecuteCommand(const ICommand*) rescheduling read: 0x7f2cb8003e30
12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 2e
12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 2f
src/solarpowerlog Segmentation fault.

[1]  http://sourceforge.net/projects/solarpowerlog/

[2]  http://solarpowerlog.git.sourceforge.net/git/gitweb.cgi?p=solarpowerlog/solarpowerlog;a=commit;h=47c079d3409c867287888f47bedb4f05b1c353b5

[3]  http://solarpowerlog.git.sourceforge.net/git/gitweb.cgi?p=solarpowerlog/solarpowerlog;a=blob;f=src/Connections/CConnectTCPAsio.cpp;h=5e3b0a1b13b66cc07e491ed98ad7dfe1f3cc5277;hb=47c079d3409c867287888f47bedb4f05b1c353b5

#7583 Missing file? new bemandawes Bugs To Be Determined system

Reported by anon, 2 years ago.

Description

Build on Windows 7 using Cygwin.

Is there libboost_system.a on the latest Boost build? I can't find it anywhere. Any difference between libboost_system.a and libboost_system-mt.a?

#7584 boost::interprocess::unique_ptr ambiguous overload for ‘operator=’ new igaztanaga Bugs To Be Determined interprocess

Reported by Evgeny Panasyuk <evgeny.panasyuk@…>, 2 years ago.

Description

Attached code fails to compile on MSVC2005 and MSVC2008:

error C2593: 'operator =' is ambiguous main.cpp:23

It also fails on gcc-4.3.4 -  http://ideone.com/p4EXFS (but with older Boost version).

#7596 process_jam_log - --locate-root doesn't work as advertised new bemandawes Bugs To Be Determined Regression Testing

Reported by ramey, 2 years ago.

Description

Beman,

I've found that --locate-root doesn't permit one to build/test a library outside the boost root directory. I've made changes to support this and tested it locally on my own projects. I can't really test it on the whole boost regression testing on my equipment. So I'm a little bit in a quandary.

I'm attaching the patch with my changes. I hope you can consider rolling them in.

The intention is that it the changes don't change the functioning of the code for current usage. However, I'm a little at a loss with the library name function. The problem occurs when there is a "sublibrary" file. I'm still looking at this.

My motivation is that I really, really need to be able to run this program from outside the boost directory. This is to support the current project I'm trying to finish - "Help for Boost Library Authors - Simple Tools - Build and Test". www.blincubator.com . Basically this is a effort to make it easier to make quality C++ and Boost libraries and support "modularization" of boost. I've invested a lot of effort and hope to be able to finish up these sticky bits. I've shown my effort to a few cohorts, and response has been unenthusiastic. As always, I'm not disuaded and have invested too much effort to bail now. So I hope you can help me with this one sticky detail.

Thanks for any help you can provide on this critical point.

Robert Ramey

#7601 Does not use Boost.Move new ebf Bugs To Be Determined variant

Reported by dave, 2 years ago.

Description

Variant contains its own move semantics emulation, which is apparently undocumented and untested (although people seem to think it's something it isn't—see  http://j.mp/SpAyRZ). That should be replaced by the use of Boost.Move so the wishful thinking becomes reality.

#7606 u32regex causes bus error new johnmaddock Bugs To Be Determined regex

Reported by a.sanders@…, 2 years ago.

Description

The Unicode regular expression

boost::make_u32regex ("[pq]
.
.[xy]");

causes a Bus Error. The same r.e. as a boost::regex is fine.

The r.e. "[pq]..[xy]" seems to be okay, so it looks like the repeated "
." is at least part of the problem.

The following program Bus Errors on Solaris 10 with gcc 4.6.1 and Boost 1.51. (and all previous versions of Boost as far as I can tell.)


# include <boost/regex/icu.hpp>

int main (int, char) {

const boost::u32regex re = boost::make_u32regex ("[pq]
.
.[xy]"); return 0;

}


#7607 path should not infer an invisible "." at the end of a path that ends with a slash new bemandawes Bugs To Be Determined filesystem

Reported by Craig Dickson <cdickson@…>, 2 years ago.

Description

Currently, a path that ends with a slash (or backslash on Windows) is treated as if it had an invisible "." at the end. For example, filename("/usr/") returns ".", and iterating over path("/usr/") produces the elements "/", "usr", and ".".

I think this is a design error, because it leads to unexpected behaviors. For example, create_directories("foo/") fails even though the directory "foo" is successfully created, because the code tries to conclude by creating ".", which makes no sense and obviously will fail.

I think the effect of ending a path with a slash should simply be that the final element (preceding the slash) is considered a directory name, not a filename. Therefore filename("foo/") should return an empty string, and has_filename("foo/") should return false. Most other operations, however, should act as if the slash simply wasn't there. Iterating over path("/usr/bin/"), for example, should return the elements "/", "usr", and "bin", and create_directories("foo/") should behave exactly the same as create_directories("foo").

#7608 Custom service of boost::asio hangs after being interrupted new chris_kohlhoff Bugs To Be Determined asio

Reported by Acer Yang <yangacer@…>, 2 years ago.

Description

Custom service like logger_service that presented in boost::asio's example hangs after being added async_wait on signal_set. i.e. One has to hit Ctrl-C twice to stop a program.

FYI, my workaround is  here.

#7612 Compile fails when including <boost/units/systems/si/codata_constants.hpp> new matthiasschabel Bugs To Be Determined units

Reported by Adam Shrader <adam.shrader@…>, 2 years ago.

Description

I found that adding "#include <boost/units/systems/si/codata_constants.hpp>" to my program will cause it to fail compilation with a huge amount of template errors. This used to work on version 1.46 but fails on version 1.47 and every version after including 1.52.beta. I am using gcc 4.7.1 on OpenSUSE 12.2. The test program is used to determine which version works is:

#include <boost/units/systems/si/codata_constants.hpp>

#include <iostream>

int main(int argc, char argv) {

std::cout << "Hello." << std::endl; return 0;

}

#7614 duplicate dosctring is generated for pure virtual methods new rwgk Bugs To Be Determined Python

Reported by tomer.spector@…, 2 years ago.

Description

When defining a method through "def" and using "pure_virtual" (see below) the given docstring is duplicated in the result python definition.

C++ class with pure-virtual method: =================================== class IOperation { public:

virtual string AsString?() = 0;

}

The wrapper to expose it to Python: =================================== class_<IOperation, boost::noncopyable, boost::shared_ptr<IOperation> >("IOperation",

"docstring for class", no_init)

.def("AsString?",

pure_virtual(&IOperation::AsString?), "docstring for method AsString?")

;

Result python class definition: =============================== class IOperation(instance):

""" docstring for class """

def AsString?(self):

""" docstring

docstring """ pass

#7617 msvc 9.0 (64-bit): warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data new chris_kohlhoff Bugs To Be Determined asio

Reported by anonymous, 2 years ago.

Description

Warnings occured when using boost::asio::ssl implementation in 64-bit configuration:

1>C:\builds\boost_1_51_0\boost/asio/ssl/impl/context.ipp(513) : warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data

1>C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(169) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data

1>C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(180) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data

1>C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(299) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data

1>C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(304) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data

#7622 filesystem - minor documentation issues new bemandawes Bugs To Be Determined filesystem

Reported by ramey, 2 years ago.

Description

.../filesystem/doc/reference.html#path-decomposition

shows

path stem(const path& p) const; path extension(const path& p) const;

I believe they should show

path stem() const; path extension() const;

as is shown at:

.../filesystem/doc/reference.html#class-path

Robert Ramey

#7624 Deduction failure new theller Bugs To Be Determined phoenix

Reported by dave, 2 years ago.

Description

This program fails:

#include <boost/phoenix.hpp>
#include <boost/range/as_literal.hpp>

using namespace boost::phoenix::placeholders;
using namespace boost::phoenix;
    
int main()
{
    find(boost::as_literal("fox"), 'x')();                      // works
    find(boost::as_literal("fox"), construct<char>(arg1))('x'); // works
    find(boost::as_literal("fox"), arg1)('x');                  // compilation error
}

Took hours to work out what was going on. Nature of the beast, I suppose.

#7625 container.hpp should get reference, etc., from the iterator types new theller Bugs To Be Determined phoenix

Reported by dave, 2 years ago.

Description

Because container.hpp reaches into so many of the "container's" typedefs, it doesn't work with iterator_range. For example, try front(arg1)(boost::as_literal("foo"))

#7630 Range adaptors do not play nicely with range-based for loops assigned neilgroves Bugs To Be Determined range

Reported by gromer@…, 2 years ago.

Description

Consider the following C++11 code, adapted from the Range documentation:

std::vector<int> vec;
for (int val : vec | boost::adaptors::reversed
                   | boost::adaptors::uniqued) {
  // Do stuff with val
}

The behavior of this natural-seeming code is actually undefined, due to a dangling reference: per the C++ standard, it is equivalent to

{
  auto && __range = (vec | boost::adaptors::reversed
                         | boost::adaptors::uniqued);
  for ( auto __begin = __range.begin(),
             __end = __range.end();
        __begin != __end;
        ++__begin ) {
    int val = *__begin;
    // Do stuff with val
  }
}

The problem is that the value returned by the subexpression vec | boost::adaptors::reversed is a temporary, so its lifetime ends at the end of the statement containing it, namely the declaration of __range. Thus, __range is left holding a dangling reference to the range it's adapting.

The fix is for each range adaptor to use an rvalue-reference overload to detect whether the input range is a temporary, and if so, move it into the adaptor (i.e. with std::move) in order to extend its lifetime.

#7633 Wanted: a way to force a nested result_type new theller Bugs To Be Determined phoenix

Reported by dave, 2 years ago.

Description

For example, I had to use this:

template <class F> struct void_function : F
{
    typedef void result_type;
    void_function(F x) : F(x) {}
};

template <class F>
void_function<F> make_void(F x)
{
    return void_function<F>(x);
}

in order to get the following to work:

inline std::ostream& operator<<(std::ostream& s, my_variant const& x)
{
    using namespace boost::phoenix::placeholders;
    using namespace boost::phoenix;
    
    boost::apply_visitor( make_void(s << arg1), x );
    //                    ^^^^^^^^^ HERE
    return s;
}

Some libraries, like Boost.Variant, don't follow the result_of protocol.

#7634 b2 segfaults when more than 64 jobs are requested new vladimir_prus Bugs To Be Determined build

Reported by Mike Gilbert <floppym@…>, 2 years ago.

Description

b2 segfaults on Linux when more than 64 jobs (-j65) are requested.

Attached patch resolves this problem.

See Gentoo bug report:

 https://bugs.gentoo.org/show_bug.cgi?id=441034

#7636 Detection of ICU fails new artyom Bugs To Be Determined locale

Reported by Arfrever.FTA@…, 2 years ago.

Description

Detection of ICU fails:

Building the Boost C++ Libraries.


Performing configuration checks

    - 32-bit                   : no
    - 64-bit                   : yes
    - x86                      : yes
    - has_icu builds           : no
    - iconv (libc)             : yes
    - icu                      : no
    - icu (lib64)              : no
    - gcc visibility           : yes
    - long double support      : yes

Build system should use 'icu-config --cflags' (for C) and 'icu-config --cxxflags' (for C++) to get flags required for compilation with ICU.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Note: See TracQuery for help on using queries.