id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 8452,Conflict between Boost.Format and filtered_graph in Boost.Graph,Jan Hudec ,Samuel Krempp,"I am using `boost::format` in my logging macros and some graphs from Boost.Graph. But whenever I include `boost/graph/filtered_graph.hpp`, GCC starts to complain that {{{ boost/graph/graph_traits.hpp: In instantiation of 'struct boost::graph_traits': boost/graph/filtered_graph.hpp:131:57: required from 'struct boost::filtered_graph_base' boost/graph/filtered_graph.hpp:141:9: required from 'class boost::filtered_graph, std::allocator >' boost/format/feed_args.hpp:253:17: required from 'void boost::io::detail::distribute(boost::basic_format&, T) [with Ch = char; Tr = std::char_traits; Alloc = std::allocator; T = const SomeWrapper &]' boost/format/feed_args.hpp:263:9: required from 'boost::basic_format& boost::io::detail::feed(boost::basic_format&, T) [with Ch = char; Tr = std::char_traits; Alloc = std::allocator; T = const SomeWrapper &]' [... more required froms, don't seem relevant anymore ...] boost/graph/graph_traits.hpp:33:52: error: 'char' is not a class, struct, or union type }}} The `SomeWrapper` is my class for customizing `operator<<`. It's template argument has few hundred characters. It is pair of iterators into something complex involving `boost::directed_graph`. The `filtered_graph` is not actually used, only included. Both GCC 4.5.2 and 4.7.2 show the above error, but Visual C++ 15.00.30729.01 (Visual Studio 9 2008) compiles it just fine. I am not sure whether it is bug in GCC or whether MSVC considers SFINAE something that isn't, but it seems to be the later. The template from `boost/graph/filtered_graph.hpp` will be found by ADL and because the template parameters are provided explicitly, compiler must instantiate it to find out whether it is better candidate or not. That fails, but not in immediate context, so it is not SFINAE. It can be worked around by qualifying the `put` in `boost/format/feed_args.hpp`, renaming it, or by modifying the templates in graph_traits and filtered_graph to make the failure SFINAE (might have some advantages elsewhere). I had the problem with 1.51 and updated to 1.53, because there are some changes to `graph_traits` that looked like they may be relevant, but it didn't help.",Bugs,closed,To Be Determined,format,Boost 1.53.0,Problem,invalid,,