error: ambiguous overload for ‘operator[]’ when using boost-bind to boost-function
===

My boost::function:   

    typedef boost::function < bool(qpid::types::Variant::Map,
    qpid::types::Variant) >  MyFilterFunctor;

An example of one of my filter functions(they all share the same parameters):

    bool MyCLass::FilterFunction1(qpid::types::Variant::Map myMap,
    qpid::types::Variant filterValue);														
I am attempting to map the filter functor with one of the member methods of my class based on the value of an input string.

Here I define the map:

    const boost::unordered_map<std::string, MyClass::MyFilterFunctor> filterStringToFunctor = boost::assign::map_list_of
    ("FilterString1", boost::bind(&MyClass::FilterFunction1, _1, _2, _3))
    ("FilterString2", boost::bind(&MyClass::FilterFunction2, _1, _2, _3))
    ("FilterString3", boost::bind(&MyClass::Function3, _1, _2, _3))
    ("FilterString4", boost::bind(&MyClass::Function4, _1, _2, _3));
	
And later in another member method, I access it:

    boost::unordered_map<std::string, MyClass::MyFilterFunctor>::const_iterator filterType;
    filterType = filterStringToFunctor.find(filterKey);
	
    return (filterType->second)(myMap, filterValue);


And my error:

    error: ambiguous overload for ‘operator[]’ in ‘a[boost::_bi::storage3<A1, A2, boost::arg<I> >::a3_ [with A1 = boost::arg<1>, A2 = boost::arg<2>, int I = 3]]’