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,,