id summary reporter owner description type status milestone component version severity resolution keywords cc 9468 Missing include in boost/spirit/home/qi/string/detail/tst.hpp amdmi3@… Joel de Guzman "boost 1.52 on FreeBSD 10.0. boost/spirit/home/qi/string/tst_map.hpp has a forward declaration of struct tst_pass_through (which is actually declared in boost/spirit/home/qi/string/tst.hpp), however structure's operator() is called in tst_map::find(): {{{ return find(first, last, tst_pass_through()); }}} This obviously won't compile due to incomplete type. This was discovered on boost 1.52, but since tst_map.hpp haven't changed since then in boost trunk, the bug still exists and needs fixing. Test program: {{{ #include int main() { boost::spirit::qi::tst_map map; int* x; map.find(x, x); return 0; } }}} clang output: {{{ In file included from test.cc:1: /usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:74:38: error: invalid use of incomplete type 'boost::spirit::qi::tst_pass_through' return find(first, last, tst_pass_through()); ^~~~~~~~~~~~~~~~~~ /usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:20:12: note: forward declaration of 'boost::spirit::qi::tst_pass_through' struct tst_pass_through; // declared in tst.hpp ^ 1 error generated. }}} gcc output: {{{ In file included from test.cc:1:0: /usr/local/include/boost/spirit/home/qi/string/tst_map.hpp: In instantiation of 'T* boost::spirit::qi::tst_map::find(Iterator&, Iterator) const [with Iterator = int*; Char = char; T = int]': test.cc:6:15: required from here /usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:74:56: error: invalid use of incomplete type 'struct boost::spirit::qi::tst_pass_through' return find(first, last, tst_pass_through()); ^ /usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:20:12: error: forward declaration of 'struct boost::spirit::qi::tst_pass_through' struct tst_pass_through; // declared in tst.hpp ^ }}} Patch is attached." Bugs closed To Be Determined spirit Boost 1.52.0 Problem fixed