CSortedSet не принимает структуры.

 

Есть структура, которую нужно поместить в CSortedSet:

struct Position
{
  int id;
  double price;
  double lots;
  
  bool operator<(const Position& other) const { return other.price < price; }
};

CSortedSet<Position> positions_set;

Однако, эта конструкция не компилируется по скольку

'Position' - objects are passed by reference only

При этом, создание конструктора копирования

Position(const Position& other)

Не решает данную ситуацию. Подскажите пожалуйста, есть ли способ подружить CSortedSet (а так же другие шаблонные коллекции данных) со структурой? 

 
DrSky:

...При этом, создание конструктора копирования

Position(const Position& other)

Не решает данную ситуацию. Подскажите пожалуйста, есть ли способ подружить CSortedSet (а так же другие шаблонные коллекции данных) со структурой? 

А должен решать? Имхо, начинать нужно оттуда, откуда ругается компилятор. А ругаться он начинает с интерфейсного метода ICollection::Add(T value). А так как  массивы, переменные типа структур и объекты классов всегда передаются по ссылке, то кина не будет ((

 
Denis Kirichenko #:

А должен решать? Имхо, начинать нужно оттуда, откуда ругается компилятор. А ругаться он начинает с интерфейсного метода ICollection::Add(T value). А так как  массивы, переменные типа структур и объекты классов всегда передаются по ссылке, то кина не будет ((

То, что это из за метода ICollection::Add(T value) это понятно. Не понятно почему "объекты структур и классов передаются только по ссылке" и не могут быть переданы по копии и почему интерфейс ICollection::Add не содержит перегруженного метода ICollection::Add(const T& value). То есть, в чем была проблема его туда добавить.