Size: a a a

2020 August 26

🦊

🦊fox.cpp in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
И про то, что дос был причиной не очень удобного старого апи в (pre-)C++98
Интересное дело, не найдешь видос?
источник

🦊

🦊fox.cpp in C++ Together 2.0
Охота послушать про пиздец доса)
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
🦊fox.cpp
Интересное дело, не найдешь видос?
Ща
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
🦊fox.cpp
Охота послушать про пиздец доса)
Да там из-за сегментки x86-16 куча страданий с near/far-указателями и 20-битными сегментными адресами
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
источник

RM

Roy Mustang in C++ Together 2.0
Есть ли разница передавать вектор по ссылке в конструктор, а потом вызывать std::move из списка инициализации в поле или же сразу при вызове конструктора мувать?
источник

🦊

🦊fox.cpp in C++ Together 2.0
std::move() в const T& ничего не делает
источник

🦊

🦊fox.cpp in C++ Together 2.0
сделай конструктор, принимающий вектор как T&&
источник

🦊

🦊fox.cpp in C++ Together 2.0
делай мув в конструктор и в конструкторе мув в поле
источник

🦊

🦊fox.cpp in C++ Together 2.0
во втором муве std::move будет тебе просто документацией
источник

RM

Roy Mustang in C++ Together 2.0
Вот пример
struct MyStruct {
  MyStruct(std::vector<std::string>& myVec) : m_Vec(std::move(myVec)) {}

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

std::vector<std::string> vec {"Hello", "World"};
MyStruct test{vec};

// или
struct MyStruct {
  MyStruct(std::vector<std::string> myVec) : m_Vec(std::move(myVec)) {}

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

std::vector<std::string> vec {"Hello", "World"};
MyStruct test{std::move(vec)};
источник

🦊

🦊fox.cpp in C++ Together 2.0
такой секрет, std::move это
template<typename T>
T&& move(T& v) {
 return v;
}
источник

🦊

🦊fox.cpp in C++ Together 2.0
или что-то такое
источник

RM

Roy Mustang in C++ Together 2.0
🦊fox.cpp
такой секрет, std::move это
template<typename T>
T&& move(T& v) {
 return v;
}
Да мне известно что делает std::move
источник

🦊

🦊fox.cpp in C++ Together 2.0
там больше шаблоноебли конечно, но суть в том, что оно кастует lvalue в rvalue
источник

RM

Roy Mustang in C++ Together 2.0
Оба варианта что я перечислил выше скорее всего выльются в один ассемблерный код при оптимизации, вопрос не в этом
источник

RM

Roy Mustang in C++ Together 2.0
Какой способ более предпочтителен в комьюнити плюсовиков?
источник

RM

Roy Mustang in C++ Together 2.0
Принимать по ссылке, а потом мувать
источник

RM

Roy Mustang in C++ Together 2.0
или же сразу мувать и по значению, и потом снова мув
источник

RM

Roy Mustang in C++ Together 2.0
Первый вариант выглядит куда лучше
источник