У меня есть переменная оболочка, которая сигнализирует об изменениях, когда базовая переменная изменяется через эту оболочку, поэтому другие объекты могут прослушивать изменения.Есть ли способ заставить автоматический вывод считать оператора <some_type>() над назначением копии?
Он отлично работает (т.е. я могу назначить, сложение, вычитание, вызов функции-члена на основе объекта (хотя они не имеют никакого способа сигнализации изменений) и т.д.), с одним небольшой икотой: если я
struct some_object_type
{
wrapper<int> some_wrapper;
}
int main()
{
some_object_type some_object;
auto value = some_object.some_wrapper;
}
value
здесь правильно выведено как wrapper<int>
. Есть ли способ заставить эту конструкцию вести себя так, как если бы some_object.some_wrapper
имеет тип int
, так что value
выводится как переменная int
?
Почему вы хотите, чтобы тип 'some_wrapper' выводился как' int', если он не является 'int'? – Peter
Вы можете «удалить» конструктор копирования для 'some_wrapper' и написать оператор неявного преобразования в' T'. Это разумно для вас? – TartanLlama
'auto value = ...' является примером построения копии, а не присваивания. – KyleKnoepfel