Jak naśladować deklarację zmiennej szablonu

Mam podstawowy typItem<N> który zależy od parametru szablonu liczby całkowitejN i klasaData który zawiera instancjeItem<N> dla kilku różnychN.

Oto przykład:

template<unsigned N>
struct Item { ... }; // some template data type

struct Data
{
    std::set<Item<1>> items1;
    std::set<Item<2>> items2;
    std::set<Item<3>> items3;
    std::set<Item<4>> items4;
    std::set<Item<5>> items5;

    bool contains(const Item<1>& x) { return items1.find(x) != items1.end(); }
    bool contains(const Item<2>& x) { return items2.find(x) != items2.end(); }
    bool contains(const Item<3>& x) { return items3.find(x) != items3.end(); }
    bool contains(const Item<4>& x) { return items4.find(x) != items4.end(); }
    bool contains(const Item<5>& x) { return items5.find(x) != items5.end(); }
};

Teraz z kilkoma funkcjamicontains istnieje wiele duplikatów kodu. Czy istnieje bardziej elegancki sposób wdrożeniaData?

questionAnswers(3)

yourAnswerToTheQuestion