id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 12134,Boost.Concepts shoudn't create typedefs based on line number,russellgreene8@…,jsiek,"Hey so today I spent about 30 minutes tearing my hair out over this compile error: error: typedef redefinition with different types ('instantiate<&::boost::concepts::requirement_)>::failed>' vs 'instantiate<&::boost::concepts::requirement_)>::failed>') This error isn't useful to what was happening. I had two BOOST_CONCEPT_ASSERT((...))s in two different files, under the global namespace. At first I theorized that it wasn't just supported but according to the docs BOOST_CONCEPT_ASSERT can be used in any scope. Then I started to look at the implementation and found this line: BOOST_PP_CAT(boost_concept_check,__LINE__) which gave it all away: they were both on the same line. The thing is that I use a code formatter, so I actually have to add comments or code to change the line number a line of code is on. I would love this to be fixed. There is a fine workaround, but it isn't a very easy to find error in your code. Here is a simple test case. Just add a newline before the BOOST_CONCEPT_ASSERT((...)) in either of the headers to get rid of the error: {{{ #!div style=""font-size: 80%"" Code highlighting: {{{#!C++ // a.h #include BOOST_CONCEPT_ASSERT((boost::Integer)); // note line number }}} }}} {{{ #!div style=""font-size: 80%"" Code highlighting: {{{#!C++ // b.h #include BOOST_CONCEPT_ASSERT((boost::UnsignedInteger)); // note line number }}} }}} {{{ #!div style=""font-size: 80%"" Code highlighting: {{{#!C++ // main.cpp #include ""a.h"" #incldue ""b.h"" int main(){} }}} }}} ",Bugs,new,To Be Determined,concept_check,Boost 1.60.0,Problem,,Compile Error,