Информация об изменениях

Сообщение Re: Вопрос про конструкторы от 08.08.2019 8:24

Изменено 08.08.2019 8:30 Videoman

Re: Вопрос про конструкторы
Вроде нашел прототип решения:
struct A
    {
        operator const char&() const { return ch; }
        operator const size_t&() const { return sz; }
        operator const std::vector<std::string>&() const { return vec; }

        char ch;
        size_t sz;
        std::vector<std::string> vec;
    };

    struct B
    {
        B(const A& a) : v(a) {}

        std::vector<std::string> v;
    };

    // Где-то ниже
    A a;
    std::vector<string_t> v1 = a;
    std::vector<string_t> v2(a);
    B b(a);

На сомом деле такая штука работает, как ни странно. Т.к. у меня все-равно возвращается прокси шаблонный объект, то на практике типы ch, sz и vec сольются в один.
Остался вопрос к спецам, это норм, или опять глюки VS2017 ?
Re: Вопрос про конструкторы
Вроде нашел прототип решения:
struct A
    {
        operator const char&() const { return ch; }
        operator const size_t&() const { return sz; }
        operator const std::vector<std::string>&() const { return vec; }

        char ch;
        size_t sz;
        std::vector<std::string> vec;
    };

    struct B
    {
        B(const A& a) : v(a) {}

        std::vector<std::string> v;
    };

    // Где-то ниже
    A a;
    std::vector<string_t> v1 = a;
    std::vector<string_t> v2(a);
    B b(a);

На сомом деле такая штука работает, как ни странно. Т.к. у меня все-равно возвращается прокси шаблонный объект, то на практике типы ch, sz и vec сольются в один.
Остался вопрос к спецам, это норм, или опять глюки VS2017 ?

P.S. не , поспешил. Все-таки осталась задача как вернуть константную ссылку на временный объект