Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию (7 стр)

Страницы: 16 7 8 9325 Следующая »
#90
11:40, 21 ноя. 2019

skalogryz
я не спрашивал как определить что ты воспользовался чужой lgpl библиотекой статически её слинковал и делаешь вид что весь код твой. Это уже совсем клинический случай.


#91
12:24, 21 ноя. 2019

Olaf85
> Но тут дело в трудоемкости - при разборе экзешника нужно долго и муторно
> выставлять типы ( ida pro), не каждый пойдет на это, а вот при разборе
> объектника вот это все на блюдечке.
Кстати, просто интересный факт. Мода OGSE на Сталкер добавили кучу всяких правок в движок, всякие новые графические фичи и все это без наличия исходников. Я не представляю те сложности, через которые им пришлось пройти...

#92
12:29, 21 ноя. 2019

Мув ктора можно как-то вызвать без std::move?

#93
12:32, 21 ноя. 2019

Для временных объектов сам вызывается.

#94
12:35, 21 ноя. 2019

1 frag / 2 deaths
Что-то не хотит:

class Test
{
public:

  int a;

  Test() :
  a()
  {
  }

  Test(const Test&)
  {
    a = 10;
  }

  Test& operator = (const Test&)
  {
    a = 10;
    return *this;
  }

  Test(Test&&)
  {
    a = 10;
  }

  Test& operator = (Test&&)
  {
    a = 10;
    return *this;
  }
};

Test GetTest()
{
  return Test();
}
Test t;

Test t1(t);
Test t2 = t;

Test t3(GetTest());
Test t4 = Test();

Test t5 = Test(t);

t1 = t;
t2 = Test();
#95
12:56, 21 ноя. 2019

nes
> Test t3(GetTest());
> Test t4 = Test();
Ну тут должен

#96
13:02, 21 ноя. 2019

1 frag / 2 deaths
В обоих случаях вызывается ктор по-умолчанию.

#97
13:03, 21 ноя. 2019

1 frag / 2 deaths
> Ну тут должен

Copy elision и RVO и тут могут вставить палки в колёса.

#98
13:04, 21 ноя. 2019

nes

Пробрось временный объект как параметр в функцию - там оптимизации такие вроде бы неуместны и должно сработать.

#99
13:12, 21 ноя. 2019

=A=L=X=
Не прокатывает https://ideone.com/ohUiBC

#100
(Правка: 13:29) 13:27, 21 ноя. 2019

nes
> Не прокатывает https://ideone.com/ohUiBC

Ты тут везде натыкаешься на copy elision (в т.ч. RVO) и поэтому move тут просто не нужен становится. Поэтому он не вызывается - move не нужен если никакого копирования вообще нет.
Поймать move за хвост можно так: https://ideone.com/ub8ZNg
Из двух перегрузок вызвалась та что && потому что объект временный. Опять таки заметь что никаких копирований нет - мы передаём ссылку - но внутри перегрузки с && ты можешь производить с объектом разрушающие действия.

#101
13:35, 21 ноя. 2019

=A=L=X=
Один хрен, мув ктор не дернулся.

#102
14:47, 21 ноя. 2019

nes
> Один хрен, мув ктор не дернулся.

И не дёрнется пока не будет копирования.

#103
14:50, 21 ноя. 2019

1 frag / 2 deaths
> > Test t4 = Test();
> Ну тут должен
не должен

#104
15:38, 21 ноя. 2019

=A=L=X=
Вот рабочий вариант: https://ideone.com/Xrwlr8
Но я бы отрывал руки, за такой код,
а крестокомитет решил, что это норма
и для такого говна сочинили эту мув семантику.

Страницы: 16 7 8 9325 Следующая »
ФлеймФорумПрограммирование