Возможно ли, чтобы перегруженный конструктор каким-либо образом вызвал другой конструктор внутри класса, как показано в приведенном ниже коде?
class A {
public:
A(std::string str) : m_str(str) {}
A(int i) { *this = std::move(A(std::to_string(i))); }
std::string m_str;
};
Приведенный выше код работает, но я боюсь, что его вызов в конструкторе может привести к неопределенному поведению.
Если да, не могли бы вы объяснить, почему, а также предложить лучшую альтернативу?
A(int i) : m_str(std::to_string(i)) {}
? - person Cory Kramer   schedule 08.02.2017std::move(std::to_string(i))
Этот ход лишний.std::to_string(i)
уже является rзначением. Напомним, чтоstd::move
на самом деле не выполняет ход - person Lightness Races in Orbit   schedule 08.02.2017