Boost C++ Libraries: Ticket #7219: boost::optional<int> gives strict alias warning on GCC 4.4.6, breaks at runtime https://svn.boost.org/trac10/ticket/7219 <p> Here is my test code: </p> <pre class="wiki">#include &lt;boost/optional.hpp&gt; struct my_type { #if 1 // change to 0 to see the problem disappear typedef boost::optional&lt;int&gt; value_type; #else typedef boost::optional&lt;int __attribute((__may_alias__))&gt; value_type; #endif value_type value_; void set (int value) { value_ = value; } value_type get () { return value_; } }; // class event void testCase () { my_type a; a.set(4); bool const b = 4 == ( *a.get() ); if( !b ) abort(); // will abort unless 'may_alias' attribute is added to 'int' } </pre><p> Here is my compile line: </p> <pre class="wiki">g++ -c src/thread/unittest/test_gcc_bug.cpp -o ../../../derived/glnxa64/obj/deployment_server/foundation/util/src/thread/unittest/test_gcc_bug.o -MD -MF ../../../derived/glnxa64/obj/deployment_server/foundation/util/src/thread/unittest/test_gcc_bug.d -MP -MT ../../../derived/glnxa64/obj/deployment_server/foundation/util/src/thread/unittest/test_gcc_bug.o -I../../../src/include -I../../../derived/glnxa64/src/include -I../include -I../../include -I//mathworks/hub/3rdparty/R2013a/356881/glnxa64/boost/include -I//mathworks/hub/3rdparty/R2013a/356141/glnxa64/cpp11compat/include -I//mathworks/hub/3rdparty/R2013a/356141/glnxa64/cpp11compat/include -I//mathworks/hub/3rdparty/R2013a/350182/glnxa64/protobuf/include -I//mathworks/hub/3rdparty/R2013a/350182/glnxa64/tbb/include -DBOOST_FILESYSTEM_VERSION=2 -DBOOST_ASIO_DISABLE_EVENTFD -DBOOST_ASIO_DISABLE_EPOLL -DTBB_AVAILABLE -O2 -pipe -pthread -fPIC -std=c++98 -fvisibility=hidden -g -D_POSIX_C_SOURCE=199506L -fno-omit-frame-pointer -DNDEBUG -W -Wcast-align -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wno-unused -Woverloaded-virtual -Wnon-virtual-dtor -Wno-ignored-qualifiers </pre><p> I was also able to work around it by changing the return type of certain optional_base&lt;T&gt; methods (i.e. get_impl()) to 'T <span class="underline">attribute</span>((<span class="underline">may_alias</span>))&amp;' (or whatever the analogous pointer or reference type is). </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/7219 Trac 1.4.3 Tony.Astolfi@… Thu, 09 Aug 2012 19:30:52 GMT attachment set https://svn.boost.org/trac10/ticket/7219 https://svn.boost.org/trac10/ticket/7219 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">test_gcc_bug.cpp</span> </li> </ul> <p> test case source file </p> Ticket Tony.Astolfi@… Thu, 09 Aug 2012 19:31:56 GMT <link>https://svn.boost.org/trac10/ticket/7219#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7219#comment:1</guid> <description> <p> Added original test case source file because the wiki formatting messed up the code. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>viboes</dc:creator> <pubDate>Sun, 09 Jun 2013 19:42:53 GMT</pubDate> <title>description changed https://svn.boost.org/trac10/ticket/7219#comment:2 https://svn.boost.org/trac10/ticket/7219#comment:2 <ul> <li><strong>description</strong> modified (<a href="/trac10/ticket/7219?action=diff&amp;version=2">diff</a>) </li> </ul> Ticket