Как мне «Скрыть ()» модальное окно WPF, не закрывая его?

У меня есть окно WPF, которое запускается на фоновый поток как своего рода «окно уведомления» ... при возникновении события отображается сообщение ... пользователь нажимает кнопку «Отложить», и я вызываю this.Visibility = Visibility.Collapsed

В тот момент, когда я скрываю окно (либо вызывая this.Hide () , либо устанавливая Visibility , как упомянуто выше) ... "

#include <iostream>
#include <memory>

using namespace std;

unique_ptr<int> foo()
{
  unique_ptr<int> p( new int(10) );

  return p;                   // 1
  //return move( p );         // 2
}

int main()
{
  unique_ptr<int> p = foo();

  cout << *p << endl;
  return 0;
}

Приведенный выше код компилируется и работает так, как задумано. Так почему же строка 1 не вызывает конструктор копирования и приводит к ошибкам компилятора? Если бы мне пришлось использовать вместо этого строку 2 , это имело бы смысл (использование строки 2 также работает, но от нас это не требуется).

Я знаю C ++ 0x разрешает это исключение для unique_ptr , поскольку возвращаемое значение является временным объектом, который будет уничтожен, как только функция завершится, тем самым гарантируя уникальность возвращаемого указателя. Мне любопытно, как это реализовано, это специальный корпус в компиляторе или есть какой-то другой пункт в спецификации языка, который он использует?

328
задан Praetorian 2 July 2018 в 07:29
поделиться