C6000 compiler reports error where it should not

Hi,

I have problem with error reported by C6000 compiler when compiling following code:

#define AVOID_BUG1

#include <boost/container/map.hpp>
#include <boost/container/vector.hpp>

#if !defined(AVOID_BUG1)
namespace bug1 {

struct no_operator { };

// this class allows implicit conversions and makes the following operator
// definition less-preferred than any other such operators that might be found
// via argument-dependent name lookup
struct any { template <class T> any(T const&); };

// when operator BOOST_TT_TRAIT_OP is not available, this one is used
no_operator operator && (const any&, const any&);

} // bug1
#endif

namespace cont = boost::container;

typedef cont::multimap<int,int> Map;
typedef Map::const_iterator T;
typedef cont::vector<T> V;

void f()
{
    V v;
    T t = T();
    v.push_back(t);
}

I think it is compiler defect.

I reproduced this error with cgtools: 7.3.6 and 7.4.2. I am using CCSv5.2.0.00069, SYS/BIOS 6.33.4.39 and simulator C66xxSim.ccxml - C64x+ CPU Cycle Accurate Simulator, Little Endian.

Use case file bug1.cpp

1172.bug1.cpp

Error message from compilers 7.3.6 and 7.4.2 - both the same.

2210.Error_message.txt

Regards.