Boost C++ Libraries: Ticket #2402: boost::spirit (boost-1.36.0) parsers fail to compile on MSVS 9.0 with struct member alignment being set to 1 byte https://svn.boost.org/trac10/ticket/2402 <p> When I try to compile the following code with MSVS 9.0 and boost-1.36.0 with struct member alignment being set to 1 byte, it fails with boost::STATIC_ASSERTION_FAILURE </p> <p> The code: </p> <pre class="wiki">parse_info&lt;std::wstring::const_iterator&gt; pi= parse(SrchNM.begin(), SrchNM.end(), as_lower_d[ !(str_p("w/"))[assign_a(prefix_is_w, true)] //prefix &gt;&gt; !list_p( (+(anychar_p - '=' - ',' - '@'))[assign_a(last_attr_name)] &gt;&gt; '=' &gt;&gt; (+(anychar_p - '=' - ',' - '@'))[MapInserter&lt;StrMap&gt;(srch_attrs, last_attr_name)] , ',' ) &gt;&gt; !ch_p('@') &gt;&gt; (*anychar_p)[assign_a(srch_word)] ]); </pre><p> The errors reported: </p> <pre class="wiki">1&gt;d:\users\slava\etap\external\boost\boost\type_traits\type_with_alignment.hpp(206) : error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE&lt;x&gt;' 1&gt; with 1&gt; [ 1&gt; x=false 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\type_traits\type_with_alignment.hpp(218) : see reference to class template instantiation 'boost::detail::type_with_alignment_imp&lt;Align&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Align=2 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(112) : see reference to class template instantiation 'boost::type_with_alignment&lt;Align&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Align=2 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(113) : see reference to class template instantiation 'boost::optional_detail::aligned_storage&lt;T&gt;::dummy_u' being compiled 1&gt; with 1&gt; [ 1&gt; T=unsigned short 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(448) : see reference to class template instantiation 'boost::optional_detail::aligned_storage&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=unsigned short 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(455) : see reference to class template instantiation 'boost::optional_detail::optional_base&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=unsigned short 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\spirit\home\classic\core\match.hpp(69) : see reference to class template instantiation 'boost::optional&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=unsigned short 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\spirit\home\classic\core\composite\optional.hpp(56) : see reference to class template instantiation 'boost::spirit::match&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=unsigned short 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\spirit\home\classic\core\composite\sequence.hpp(56) : see reference to function template instantiation 'boost::spirit::match&lt;boost::spirit::nil_t&gt; boost::spirit::optional&lt;S&gt;::parse&lt;ScannerT&gt;(const ScannerT &amp;) const' being compiled 1&gt; with 1&gt; [ 1&gt; S=boost::spirit::chlit&lt;char&gt;, 1&gt; ScannerT=boost::spirit::scanner&lt;std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;,boost::spirit::scanner_policies&lt;boost::spirit::inhibit_case_iteration_policy&lt;boost::spirit::iteration_policy&gt;,boost::spirit::match_policy,boost::spirit::action_policy&gt;&gt; 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\spirit\home\classic\core\composite\sequence.hpp(55) : see reference to function template instantiation 'boost::spirit::match&lt;boost::spirit::nil_t&gt; boost::spirit::sequence&lt;A,B&gt;::parse&lt;ScannerT&gt;(const ScannerT &amp;) const' being compiled 1&gt; with 1&gt; [ 1&gt; A=boost::spirit::sequence&lt;boost::spirit::optional&lt;boost::spirit::action&lt;boost::spirit::strlit&lt;const char *&gt;,boost::spirit::ref_const_ref_actor&lt;bool,bool,boost::spirit::assign_action&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::list_parser&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,`anonymous-namespace'::MapInserter&lt;StrMap&gt;&gt;&gt;,boost::spirit::chlit&lt;char&gt;,boost::spirit::no_list_endtoken,boost::spirit::binary_parser_category&gt;&gt;&gt;, 1&gt; B=boost::spirit::optional&lt;boost::spirit::chlit&lt;char&gt;&gt;, 1&gt; ScannerT=boost::spirit::scanner&lt;std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;,boost::spirit::scanner_policies&lt;boost::spirit::inhibit_case_iteration_policy&lt;boost::spirit::iteration_policy&gt;,boost::spirit::match_policy,boost::spirit::action_policy&gt;&gt; 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\spirit\home\classic\core\composite\impl\directives.ipp(141) : see reference to function template instantiation 'boost::spirit::match&lt;boost::spirit::nil_t&gt; boost::spirit::sequence&lt;A,B&gt;::parse&lt;boost::spirit::scanner&lt;IteratorT,PoliciesT&gt;&gt;(const ScannerT &amp;) const' being compiled 1&gt; with 1&gt; [ 1&gt; A=boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::optional&lt;boost::spirit::action&lt;boost::spirit::strlit&lt;const char *&gt;,boost::spirit::ref_const_ref_actor&lt;bool,bool,boost::spirit::assign_action&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::list_parser&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,`anonymous-namespace'::MapInserter&lt;StrMap&gt;&gt;&gt;,boost::spirit::chlit&lt;char&gt;,boost::spirit::no_list_endtoken,boost::spirit::binary_parser_category&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::chlit&lt;char&gt;&gt;&gt;, 1&gt; B=boost::spirit::action&lt;boost::spirit::kleene_star&lt;boost::spirit::anychar_parser&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;, 1&gt; IteratorT=std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;, 1&gt; PoliciesT=boost::spirit::scanner_policies&lt;boost::spirit::inhibit_case_iteration_policy&lt;boost::spirit::iteration_policy&gt;,boost::spirit::match_policy,boost::spirit::action_policy&gt;, 1&gt; ScannerT=boost::spirit::scanner&lt;std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;,boost::spirit::scanner_policies&lt;boost::spirit::inhibit_case_iteration_policy&lt;boost::spirit::iteration_policy&gt;,boost::spirit::match_policy,boost::spirit::action_policy&gt;&gt; 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\spirit\home\classic\core\composite\directives.hpp(163) : see reference to function template instantiation 'RT boost::spirit::impl::inhibit_case_parser_parse&lt;result_t,T,ScannerT&gt;(const ST &amp;,const ScannerT &amp;,const boost::spirit::iteration_policy &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; RT=result_t, 1&gt; T=boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::optional&lt;boost::spirit::action&lt;boost::spirit::strlit&lt;const char *&gt;,boost::spirit::ref_const_ref_actor&lt;bool,bool,boost::spirit::assign_action&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::list_parser&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,`anonymous-namespace'::MapInserter&lt;StrMap&gt;&gt;&gt;,boost::spirit::chlit&lt;char&gt;,boost::spirit::no_list_endtoken,boost::spirit::binary_parser_category&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::action&lt;boost::spirit::kleene_star&lt;boost::spirit::anychar_parser&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;&gt;, 1&gt; ScannerT=boost::spirit::scanner&lt;std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;,boost::spirit::scanner_policies&lt;&gt;&gt;, 1&gt; ST=boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::optional&lt;boost::spirit::action&lt;boost::spirit::strlit&lt;const char *&gt;,boost::spirit::ref_const_ref_actor&lt;bool,bool,boost::spirit::assign_action&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::list_parser&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,`anonymous-namespace'::MapInserter&lt;StrMap&gt;&gt;&gt;,boost::spirit::chlit&lt;char&gt;,boost::spirit::no_list_endtoken,boost::spirit::binary_parser_category&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::action&lt;boost::spirit::kleene_star&lt;boost::spirit::anychar_parser&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;&gt; 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\spirit\home\classic\core\impl\parser.ipp(30) : see reference to function template instantiation 'boost::spirit::match&lt;boost::spirit::nil_t&gt; boost::spirit::inhibit_case&lt;ParserT&gt;::parse&lt;boost::spirit::scanner&lt;IteratorT,PoliciesT&gt;&gt;(const ScannerT &amp;) const' being compiled 1&gt; with 1&gt; [ 1&gt; ParserT=boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::optional&lt;boost::spirit::action&lt;boost::spirit::strlit&lt;const char *&gt;,boost::spirit::ref_const_ref_actor&lt;bool,bool,boost::spirit::assign_action&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::list_parser&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,`anonymous-namespace'::MapInserter&lt;StrMap&gt;&gt;&gt;,boost::spirit::chlit&lt;char&gt;,boost::spirit::no_list_endtoken,boost::spirit::binary_parser_category&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::action&lt;boost::spirit::kleene_star&lt;boost::spirit::anychar_parser&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;&gt;, 1&gt; IteratorT=std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;, 1&gt; PoliciesT=boost::spirit::scanner_policies&lt;&gt;, 1&gt; ScannerT=boost::spirit::scanner&lt;std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;,boost::spirit::scanner_policies&lt;&gt;&gt; 1&gt; ] 1&gt; d:\users\slava\etap\projects\tagged\tgtproc\tgtproc.cpp(1329) : see reference to function template instantiation 'boost::spirit::parse_info&lt;IteratorT&gt; boost::spirit::parse&lt;std::_String_iterator&lt;_Elem,_Traits,_Alloc&gt;,boost::spirit::inhibit_case&lt;ParserT&gt;&gt;(const IteratorT &amp;,const IteratorT &amp;,const boost::spirit::parser&lt;DerivedT&gt; &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; IteratorT=std::_String_iterator&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt;&gt;, 1&gt; _Elem=wchar_t, 1&gt; _Traits=std::char_traits&lt;wchar_t&gt;, 1&gt; _Alloc=std::allocator&lt;wchar_t&gt;, 1&gt; ParserT=boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::optional&lt;boost::spirit::action&lt;boost::spirit::strlit&lt;const char *&gt;,boost::spirit::ref_const_ref_actor&lt;bool,bool,boost::spirit::assign_action&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::list_parser&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,`anonymous-namespace'::MapInserter&lt;StrMap&gt;&gt;&gt;,boost::spirit::chlit&lt;char&gt;,boost::spirit::no_list_endtoken,boost::spirit::binary_parser_category&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::action&lt;boost::spirit::kleene_star&lt;boost::spirit::anychar_parser&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;&gt;, 1&gt; DerivedT=boost::spirit::inhibit_case&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::optional&lt;boost::spirit::action&lt;boost::spirit::strlit&lt;const char *&gt;,boost::spirit::ref_const_ref_actor&lt;bool,bool,boost::spirit::assign_action&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::list_parser&lt;boost::spirit::sequence&lt;boost::spirit::sequence&lt;boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::action&lt;boost::spirit::positive&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::difference&lt;boost::spirit::anychar_parser,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;,boost::spirit::chlit&lt;char&gt;&gt;&gt;,`anonymous-namespace'::MapInserter&lt;StrMap&gt;&gt;&gt;,boost::spirit::chlit&lt;char&gt;,boost::spirit::no_list_endtoken,boost::spirit::binary_parser_category&gt;&gt;&gt;,boost::spirit::optional&lt;boost::spirit::chlit&lt;char&gt;&gt;&gt;,boost::spirit::action&lt;boost::spirit::kleene_star&lt;boost::spirit::anychar_parser&gt;,boost::spirit::ref_value_actor&lt;std::wstring,boost::spirit::assign_action&gt;&gt;&gt;&gt; 1&gt; ] 1&gt;d:\users\slava\etap\external\boost\boost\type_traits\type_with_alignment.hpp(207) : error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE&lt;x&gt;' 1&gt; with 1&gt; [ 1&gt; x=false 1&gt; ] </pre><p> Increasing struct member alignment to 2 or more bytes solves the problem. The same code gives no errors with boost-1.35.0 even with alignment=1byte. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/2402 Trac 1.4.3 Joel de Guzman Fri, 10 Oct 2008 09:10:56 GMT <link>https://svn.boost.org/trac10/ticket/2402#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2402#comment:1</guid> <description> <p> Seems more like a problem of boost optional than spirit. You can try isolating the code with using boost optional alone (without spirit). If the problem persists, then you can send the problem report to the optional author. </p> </description> <category>Ticket</category> </item> <item> <author>slava@…</author> <pubDate>Mon, 13 Oct 2008 08:03:41 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/2402#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2402#comment:2</guid> <description> <p> Yes, it appears to be a problem with boost::optional. The following simple test fails if compiled with struct member alignment=1 or 2 bytes, and everything is OK when alignment is set to 4 or more bytes: </p> <pre class="wiki">#include &lt;boost/optional.hpp&gt; boost::optional&lt;int&gt; test_func(int i) { if(i) return boost::optional&lt;int&gt;(1234); else return boost::optional&lt;int&gt;(); } int main(int argc, char* argv[]) { test_func(1); return 0; } </pre><p> The errors are: </p> <pre class="wiki">d:\users\slava\etap\external\boost\boost\type_traits\type_with_alignment.hpp(206) : error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE&lt;x&gt;' 1&gt; with 1&gt; [ 1&gt; x=false 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\type_traits\type_with_alignment.hpp(218) : see reference to class template instantiation 'boost::detail::type_with_alignment_imp&lt;Align&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Align=4 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(112) : see reference to class template instantiation 'boost::type_with_alignment&lt;Align&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Align=4 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(113) : see reference to class template instantiation 'boost::optional_detail::aligned_storage&lt;T&gt;::dummy_u' being compiled 1&gt; with 1&gt; [ 1&gt; T=int 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(448) : see reference to class template instantiation 'boost::optional_detail::aligned_storage&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=int 1&gt; ] 1&gt; d:\users\slava\etap\external\boost\boost\optional\optional.hpp(455) : see reference to class template instantiation 'boost::optional_detail::optional_base&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=int 1&gt; ] 1&gt; d:\users\slava\test\test.cpp(8) : see reference to class template instantiation 'boost::optional&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=int 1&gt; ] 1&gt;d:\users\slava\etap\external\boost\boost\type_traits\type_with_alignment.hpp(207) : error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE&lt;x&gt;' 1&gt; with 1&gt; [ 1&gt; x=false 1&gt; ] </pre> </description> <category>Ticket</category> </item> <item> <dc:creator>Joel de Guzman</dc:creator> <pubDate>Mon, 13 Oct 2008 08:24:42 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/2402#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2402#comment:3</guid> <description> <p> Ok. I suggest you add a new trac ticket for boost optional and close this one. </p> </description> <category>Ticket</category> </item> <item> <author>slava@…</author> <pubDate>Mon, 13 Oct 2008 12:12:26 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/2402#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2402#comment:4</guid> <description> <p> I've created ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2409" title="#2409: Bugs: boost::optional (boost-1.36.0) fails to compile on MSVS 9.0 with ... (closed: fixed)">#2409</a>, but I have no permission to close this one. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Joel de Guzman</dc:creator> <pubDate>Mon, 13 Oct 2008 12:28:16 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/2402#comment:5 https://svn.boost.org/trac10/ticket/2402#comment:5 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">invalid</span> </li> </ul> Ticket