Я проверил вопросы по StackOverflow (особенно casting operator - const vs non-const) и user-defined conversion - cppreference.com, но я не нашел полезных примеров для неконстантной версии.Когда реализовать оператор неконсольного литья
В каких случаях оператор бесконтактного литья имеет смысл?
фон (редактировать): Вопрос пробуждать от простой реализации в Факультативным класса шаблона для плоских макетов памяти. Здесь я хотел неявное приведение к содержащемуся типу, и мой первый подход, как это (без const
):
template <typename T>
class Optional
{
public:
operator T() { return value; }
// ...
private:
T value;
// ...
};
После того, как компилятор напомнил мне об этом, мне было интересно, если это (при возвращении RValue) было бы просто неправильно в любом случае.
Что защемляет? И еще более интересно: хорошо ли это работает? – Wolf
@ Вольф, в основном парень написал на заказ код и покинул компанию. Затем код должен был быть развернут несколькими месяцами позже, не работал, был заполнен утечками памяти и т. Д. - это был самый короткий способ заставить его работать и с необходимой нам совместимостью практически не было времени. Это сработало, это было некрасиво. – Niall