Fehler, Irrtümer, Fragen - Seite 2199

 
Комбинатор:

Temporäre Objekte werden in der Regel nicht sofort gelöscht, sondern am Ende des Kontexts. In C++ ist dies, wenn ich mich nicht irre, im Standard festgelegt.

Wenn Sie eine schnelle Löschung wünschen, kontrollieren Sie den Kontext.

Wirklich müssen tun, Betreiber =

Ich danke Ihnen! SD sagte, dass sie planen, das aktuelle Verhalten zu beheben, aber es wurde kein Zeitrahmen festgelegt.

 

Farblinien (Ebenen) bei der Vorschau (nicht gedruckt, aber wahrscheinlich auch im Druck) von Grafiken für den Druck in Schwarzweiß.


 

Terminal Bild 1795

Windows 7 64.


Wenn ich die Optimierung starte und sie nach 30 Minuten unterbreche , bleibt das Terminal hängen und es gibt keine Möglichkeit, sie zu beenden.

Es gibt 8 MetaTester64-Agenten im Task-Manager.

Danach kann ich das Terminal nicht mehr starten. Ich muss warten oder den Computer neu starten.


Ist das bei allen so?

Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 
Was ist wieder mit dem Forum los? Der Tag hat begonnen und die unwirkliche Verlangsamung hat eingesetzt. Die Seiten laden schnell, dann für etwa 30 Sekunden.
 
Vladimir Karputov:
Was ist wieder mit dem Forum los? Der Tag hat begonnen und die unwirkliche Verlangsamung hat eingesetzt. Die Seiten werden dann etwa 30 Sekunden lang schnell geladen.
Rkn, wahrscheinlich... es gibt ein Problem mit dem Pushen auf andere Dienste... es ist, als ob Telegram über sie funktioniert...
 
Compiler-Fehler
class A
{
public:
  int i;
  
  void f() const
  {
    A* Tmp = true ? &this : &this; // no problem - BUG!
//    A* Tmp = &this; // '=' - cannot convert from const pointer to nonconst pointer
    
    Tmp.i = 4;
  }
};

void OnStart()
{
  const A a;
  
  a.f();
  
  Print(a.i); // 4
}
 
Ilnur Khasanov:
rkn, schätze ich... Es gibt Probleme mit Pushern bei anderen Diensten... es ist, als würde Telegram über sie arbeiten...

Da ich mich außerhalb Russlands befinde, hänge sich die Website manchmal noch auf. Aber ich habe es schon seit Monaten. Daran bin ich gewöhnt.

 
fxsaber:

Ich danke Ihnen! Es stellt sich heraus, dass return object und "=" bei der Definition eines Objekts durch einen zusätzlichen Konstruktor gehen.

Ich würde gerne irgendwo eine klare Tabelle sehen, welche Fälle als Konstruktoren (und welche als Operatoren) bezeichnet werden. Im Moment läuft alles auf der Ebene der Intuition ab, und die versagt natürlich.

Verlassen Sie sich besser nicht zu sehr auf bestimmte Regeln, Compiler dürfen solche Dinge recht frei optimieren (rvo, nrvo, copy elision, vielleicht einige andere Optimierungen werden sicher unnötiges Zeug herausschneiden). Der Kopierkonstruktor und der "equal"-Operator sollten dasselbe tun (es ist nicht nötig, ihnen ein unterschiedliches Verhalten zu geben). Es gibt einen guten Ansatz, der "copy-and-swap idiom" genannt wird, wenn es die englische Sprache zulässt. Er ist hier ausführlich beschrieben: https: //stackoverflow.com/questioncopy-and-swap idioms/3279543/what-is-the-copy-and-swap-idiom.
Kurz gesagt, Sie schreiben eine Swap-Funktion, die in allen Konstruktoren und Operatoren verwendet wird (wir reduzieren die Menge an Code und erhalten das gleiche Verhalten, was dazu führt, dass Sie sich keine Sorgen darüber machen müssen, was der Compiler aufrufen, schneiden, überoptimieren wird).

dumb_array& operator=(dumb_array other)
{
    swap(*this, other);
    return *this;
}
dumb_array (dumb_array &&other)
{//this должен быть в валидном состоянии
    swap(*this, other);
}
dumb_array& operator=(dumb_array &&other)
{
    swap(*this, other);
    return *this;
}

"Hervorgehobene Zeichenfolgen werfen Fragen auf. Warum stürzten die temporären Objekte nicht ab, sobald sie verwendet wurden? Das heißt, vor der Ausgabe von dreißig."

Ich denke, dass diese Fragen zu Recht gestellt werden. Vorläufige Objekte sollten nach dem Doppelpunkt kollabiert sein.

ZS: Ich habe den Code dort ein wenig geändert, da der kopierende Konstruktor (nicht der bewegliche) ohnehin benötigt wird. Bei µl ist der Vorteil nicht so offensichtlich, da es keine r-Wert-Referenzen gibt.
What is the copy-and-swap idiom?
What is the copy-and-swap idiom?
  • stackoverflow.com
What is this idiom and when should it be used? Which problems does it solve? Does the idiom change when C++11 is used? Although it's been mentioned in many places, we didn't have any singular "what is it" question and answer, so here it is. Here is a partial list of places where it was previously mentioned:
 
pavlick_:

Verlassen Sie sich besser nicht zu sehr auf bestimmte Regeln, Compiler dürfen solche Dinge ganz frei optimieren (rvo, nrvo, copy elision, vielleicht werden einige andere Optimierungen sicher unnötiges Zeug herausschneiden). Der Kopierkonstruktor und der "equal"-Operator sollten das Gleiche tun (es ist nicht nötig, ihnen ein unterschiedliches Verhalten zu geben). Es gibt einen guten Ansatz, der "copy-and-swap idiom" genannt wird, wenn es die englische Sprache zulässt; er ist hier ausführlich beschrieben: https://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom.
Kurz gesagt, Sie schreiben eine Swap-Funktion, die in allen Konstruktoren und Operatoren verwendet wird (wir reduzieren die Menge an Code und erhalten das gleiche Verhalten und als Ergebnis nicht darum kümmern, was Compiler ruft, schneidet, über-optimiert).

"Die hervorgehobenen Zeilen werfen Fragen auf. Warum stürzten die temporären Objekte nicht ab, sobald sie verwendet wurden? Das heißt, vor dem Erreichen des dreißigsten Lebensjahres".

Ich denke, dass diese Fragen zu Recht gestellt werden. Vorläufige Objekte sollten nach dem Doppelpunkt kollabiert sein.

Danke, der SD hat bereits vor den RVO-Plänen gewarnt.

 
Warum gibt das Skript nichts aus?
class A
{
public:
  A() {}
  
  template <typename T>
  void operator =( T& )
  {
    Print(__FUNCSIG__);
  }

  template <typename T>
  A( T& )
  {
    Print(__FUNCSIG__);
  }
};

A* f()
{
  return(new A);
}

void OnStart()
{
  A* a = f();
  
  A* b;
  b = f();
  
  delete a;
  delete b;
}