Я хочу сохранить класс простым и не определять конструктор, чтобы я мог сделать Pt data = {0, 5};
поэтому я решил, что лучший способ конвертировать Pt_t из короткого в длинный или наоборот - сделать что-то вроде этого.
template <class T>
struct Pt_t
{
T x, y;
template <class T2> operator Pt_t<T2>() { Pt_t pt = {x, y}; return pt; }
};
Компилятору это не нравится, и он вызывает оператор Pt_t при возврате pt; таким образом получая переполнение стека. Как я могу предотвратить это? единственное решение, о котором я могу подумать, это использование конструкторов Pt_t, удаляющих Pt_t pt = {1, 2}; который я предпочитаю оставить, если смогу.