Boost logo

Boost Users :

Subject: Re: [Boost-users] Structure size when compiling with and without -std=c++11
From: Leon Mlakar (leon_at_[hidden])
Date: 2015-07-31 18:38:44


On 31.07.2015 21:25, Miloslav Marik wrote:
> Hi,
>
> I would like to share my experience with boost when combining with
> c++11. I hope it might help someone.
>
> Suppose a simple program:
>
> #include <boost/asio.hpp>
> #include <iostream>
>
> using boost::asio::detail::atomic_count;
>
> struct Test
> {
> // Whether the task has been interrupted.
> bool task_interrupted_;
>
> // The count of unfinished work.
> atomic_count outstanding_work_;
> };
>
> int main ()
> {
> std::cout << "Size is " << sizeof(Test) << std::endl;
> return 0;
> }
> And here is the story:
>
> $ /opt/gcc-4.8.4/bin/g++ -std=c++11 -I /opt/boost-1.58.0/include/ -L
> /opt/boost-1.58.0/lib -lboost_system b.cpp
> $ ./a.out
> Size is 16
> $ /opt/gcc-4.8.4/bin/g++ -I /opt/boost-1.58.0/include/ -L
> /opt/boost-1.58.0/lib -lboost_system b.cpp
> $ ./a.out
> Size is 8
>
> It means that c++11 program cannot be linked with boost libraries
> compiled without "-std=c++11" option. It was asio in my case and the
> program was linked with libboost_log.so.1.58.0.
>
This is known:

https://svn.boost.org/trac/boost/ticket/9207

Using BOOST_ASIO_DISABLE_STD_ATOMIC helps and would yield size 8. But
the ticket is wrong, the problem exists with clang, too. On OS/X, at least.

Cheers,

Leon



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net