std::string s;— Вау, C++, оказывается, как Python! Можно присваивать строке целые числа, — подумаете вы, увидев, что данный фрагмент кода компилируется без ошибок. И... Будете неправы.
s = 1;
Все дело в объявлении оператора присваивания:
string& string::operator=(char ch);которое приводит
1 в char.Так что никакой магии нет. И данный момент заставит вас подумать, почему же в код закралась ошибка.
А если вы все-таки хотите подобное поведение как в Python, взгляните в сторону
std::any https://en.cppreference.com/w/cpp/utility/anyEnglish version: https://telegra.ph/Pythonic-C-03-18