15 września 2012

Boost.Tuple jako klucz mapy

Ostatnio próbowałem wykorzystać obiekt krotki, jako klucz std::map. Jak się okazało kompilator zaprotestował
#include <string>
#include <map>
#include <boost/tuple/tuple.hpp>

int main()
{
    std::map<boost::tuple<int, bool, std::string>, int> m;

    boost::tuple<int, bool, std::string> key(2, false, "asdf");
    m[key] = 44;

    return 0;
}
Protest - kompilator skarży się, że boost::tuple (nasz klucz) nie posiada operatora less.
/usr/include/c++/4.6/bits/stl_function.h:236:22: error: no match for ‘operator<’ in ‘__x < __y’
Po zbadaniu problemu okazało się, że trzeba do-includować poniższą linijkę.
#include <boost/tuple/tuple_comparison.hpp>

Brak komentarzy:

Prześlij komentarz