エラー、バグ、質問 - ページ 2670

 

テスターエラー(というか、もう理解不能)

テスターでプロフィットトレードが表示されない

 

内部型 "C "の複雑なラップオブジェクトを何度も作成したが、全く別のデータ型("B"、"int"、何でもいい)になってしまった...」。
実際、ローカライズ、再現、回避策を見つけるのに1日かかりましたが、残念ながらすべて無駄でした...。
以前提案した、架空のテンプレートパラメータを使用した回避 策は、以下の例では役に立たないことが判明しました。

template<typename _Tp, typename _Opt>
struct It_g{
   class Opt : public _Opt{}; 
   _Tp p;
};

template<typename _Tp>
class A_g{
public:
   struct It : public It_g<_Tp, Opt_g<_Tp>>{};
};

template<typename _Tp>
class V{
public:
   struct It : public  A_g<_Tp>::It{};
   It b;
};

template<typename _Tp>
class Opt_g{
   template<typename _It>
   static void test(_It &it){      
      printf(typename(_Tp));          // int
      printf(typename(it.p));         // ClassA*
      
      _Tp p = it.p;                   // Compiler Error: '=' - illegal operation use
   };
};


template<typename T>
class GetStructType{
public:
   struct type : public T{};
};

template<typename _It>
void test(_It &it){
   GetStructType<_It>::type::Opt::test(it);
}

class ClassA{};


void OnStart(){ 
   V<int> v1;
   test(v1.b);
   
   V<ClassA*> v2;
   test(v2.b);
   
   V<int>::It it3;
   test(it3);
   
   V<ClassA*>::It it4;
   test(it4);
}

唯一の解決策は、"自作 "のオートタイプを使って何とか手に入れたのですが、膨大なコンパイルコストと実際のコードの速度の利益はゼロでした......。
どなたか回避する方法をご存知の方、助けてください。

 
Alexey Klenov:

テスターエラー(というか、もう理解不能)

ビジュアライザーは、アーキテクチャ上の理由から、常に現在のステータスを表示するわけではありません。

 
fxsaber:

ビジュアライザーは、建築上の理由から、必ずしも実際の状態を表示するものではありません。

ありがとうございます、肝に銘じます。
 

テンプレート関数/クラスキャッシュの不具合
( MT5(ビルド2361)では修正 されていない)*** (up) Undefined Behavior, 内部型 "C" の複雑なラップオブジェクトを何度か作成し、それが全く別のデータ型、多分 "B", 多分 "int", 何でもいいのですが、判明した場合...。
(MT5(ビルド2361)では修正 されていません)* コンパイルエラー、const ref テンプレート引数として関数ポインタを渡す際のバグ。
(MT5(ビルド2361)では修正 されていません)* コンパイルエラー、B<int>オブジェクトはB<void*>クラスオブジェクトの後に作成できますが、前に作成するとコンパイルエラーが発生します。


テンプレート機能/クラス動作の不具合
( MT5(ビルド2361)では修正 されていない)*** コンパイルエラー、テンプレート関数内のバグ、明示的な型変換 操作で渡されたポインタは、それ以外の場合、クラスのように動作します。
(MT5(ビルド2361)では修正 されていません)** コンパイルエラー、内部クラス使用時のテンプレートクラスコード生成の不具合。
(MT5(ビルド2361)では未修正)** テンプレート関数のテンプレートパラメータで内部クラスにアクセスしようとすると、コンパイルエラーになります。
(MT5(ビルド2361)では修正 されていません)** コンパイルエラー、テンプレートメソッド/クラス生成時のバグ、テンプレートパラメータの「自動置換」処理がスコープ外に出てメインプログラムコードになる。
(MT5(ビルド2361)では修正 されていません)* テンプレートクラスがテンプレートメソッドの戻り値として動作する場合、コンパイルエラーが発生し、テンプレートクラスのコードが生成されない不具合があります。
(MT5(ビルド2361)では修正 されていません)* コンパイルエラー 内部構造体をテンプレート関数に渡した場合、テンプレートクラス内の他の内部構造体の ベースデータ型として 使用できない不具合があります。
(MT5(ビルド2361)では修正 されていません)* コンパイルエラー、オーバーロードされた非テンプレート関数から明示的な引数型でテンプレート関数を呼び出す場合のバグ。

(MT5(build2361)では未修正) コンパイルエラー、内部クラス定義のバグ - ベースクラス指定時にグローバルネームスペースを参照しない
(MT5(ビルド2361)では修正
されていません)***(新)コンパイルエラー、不適切な出力警告への主な主張 - 「非推奨の動作、隠しメソッド呼び出しは将来のMQLコンパイラバージョンで無効になります」。現在の実装は、雀の上に大砲を撃って いるようなものです。
(
MT5(ビルド2361)では修正 されていません)** テンプレート関数の戻り値が、テンプレート関数の引数の型によって定義されるテンプレートクラス内の内部クラスである場合のコンパイルエラーです。
(
MT5(ビルド2361)では修正 されていません)*(new)コンパイルエラー、テンプレートクラス内でテンプレート関数を宣言する際に、再利用されるテンプレート型名のチェックが行われないため、予期しない動作が 発生します。
(
MT5(ビルド2361)では修正 されていません)* (new) Runtimer Error, ベースクラスのコンストラクタで、ベースクラスのオブジェクトへのポインタを親クラスへのポインタにキャストする際に明示的な型キャストを実行することができない。
(
MT5(build2361)では未修正) (new) コンパイルエラー、テンプレートクラス/構造体がオブジェクトの場合、 "in place created" オブジェクトを返すことに関する複数の不具合が 発生する。


MQLとC++のオーバーロードされた関数の呼び出し優先度の不一致に関する不具合。
( MT5(ビルド2361)では修正 されていません)*** A <= B <= C <= D のクラスが継承され、パラメータ A* とパラメータ B* の2つのオーバーロード関数が実装されている場合、MQL でその関数にオブジェクト C* または D* を渡すと、コンパイルエラー "ambiguous call to overloaded function" が発生することがあります。
( MT5(ビルド2361)では修正 されていません)** ランタイム、オーバーロードされたテンプレート関数の呼び出しに対する優先度の不一致。
( MT5(ビルド2361)では修正 されていません) ** コンパイルエラー オーバーロードされたテンプレート関数の呼び出しの優先度は、実際にはテンプレートパラメータの型に依存し、理論的にはコンパイルの結果には影響しないはずです。
( MT5(ビルド2361)では修正 されていません)** 渡されたパラメータに適したシグネチャを持つオーバーロードされたテンプレート関数が存在しますが、テンプレート関数のコード生成時にコンパイルエラーが発生します。


関数実行の遅さに関する不具合、コードオプティマイザーの動作に関する不具合。
( MT5(ビルド2361)では修正 されていません)** (new) ランタイム、ArrayResizeを使用して配列に1要素ずつ追加する際に、それらのためのメモリが事前に予約されているにもかかわらず、大きなオーバーヘッドが発生する、例えば、構造体は最大で7倍遅くなる。


提案します。
link- リテラルと一時変数を const ref 関数の引数として渡せるようにすることについて。
link- "プロジェクト "タブでプロジェクトファイルを移動 するとき、移動したファイルが開いていてMEタブにある場合、自動的にその場所のパスを更新するようにしました。
link- MQLにtypedef宣言機能を導入する。
link- デフォルトのコピーコンストラクタと代入演算子を強制的に生成できるようにすることについて。

 
fxsaber:

ビジュアライザーは、アーキテクチャ上の理由により、常に現在のステータスを表示するわけではありません。

アレクセイ・クレノフ
ありがとうございます、覚えておきます。

一時停止後、数ティック実行(F12)することで治る。

 
Andrey Khatimlianskii:

一時停止後、数ティック実行(F12)することで治る。

ありがとうございます。試してみます。

 
Sergey Dzyublik:

内部型 "C "の複雑なラップオブジェクトを何度も作成したが、全く別のデータ型("B"、"int"、何でもいい)になってしまった...」。
実際、ローカライズ、再現、回避策を見つけるのに1日かかりましたが、残念ながらすべて無駄でした......。

ようやく納得のいく解決策を見出すことができました。
静的なクラスメンバーを使用することで、上記のようなバグを回避できることがわかりました。

template<typename _Tp, typename _Opt>
struct It_g{
   class Opt : public _Opt{}; 
   _Tp p;
   
   static Opt opt;
};

template<typename _Tp, typename _Opt>
static It_g::Opt It_g::opt;


template<typename _Tp>
class A_g{
public:
   struct It : public It_g<_Tp, Opt_g<_Tp>>{};
};

template<typename _Tp>
class V{
public:
   struct It : public  A_g<_Tp>::It{};
   It b;
};


template<typename _Tp>
class Opt_g{
   template<typename _It>
   static void test(_It &it){      
      printf(typename(_Tp));          // ClassA*
      printf(typename(it.p));         // ClassA*
      
      _Tp p = it.p;                   // OK
   };
};


template<typename _It>
void test(_It &it){
   it.opt.test(it);
}

class ClassA{};


void OnStart(){ 
   V<int> v1;
   test(v1.b);
   
   V<ClassA*> v2;
   test(v2.b);
   
   V<int>::It it3;
   test(it3);
   
   V<ClassA*>::It it4;
   test(it4);
}
 

このストレージエラーはどうすれば直るのですか?


だんだんとファイルの保存を拒否するようになる。すぐに保存されているものはすべて更新できなくなります。

 

買い逆指値注文と売り逆指値注文のツールチップの損益が正しく計算されない。

マウスをtpに重ねたとき

の上にマウスを乗せると

理由: