Код: Выделить всё
class custom_string
{
public:
custom_string(const char* str) : _str{str} {}
operator const char*() const { return _str; }
private:
const char* _str;
};
Код: Выделить всё
struct pod_t
{
std::string str;
int other_data;
};
void test()
{
custom_string cstr("Hello");
std::set strings;
strings.emplace(cstr);
pod_t pod {cstr, 42}; // C2440: 'initializing': cannot convert from 'custom_string' to 'std::string'
}
< /code>
Почему последняя строка приводит к ошибке компилятора (я использую MSVC с флага /std: c ++ 20 < /code>)? Если компилятор может выяснить путь от custom_string
Подробнее здесь: https://stackoverflow.com/questions/797 ... ot-another