Есть конструктор удобства в С++?

Возможно ли, что перегруженный конструктор каким-то образом вызывает другой конструктор внутри класса, аналогичный приведенному ниже коду?

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;
};

Приведенный выше код работает, но я боюсь, что вызов этого в конструкторе может привести к поведению undefined.

Если это возможно, вы можете объяснить, почему, а также предложить лучшую альтернативу?