オーバーロードされた構造体演算子で定数パラメーターを使用できますか?

二十六

.NET Core 2.0クラスライブラリで次の不変の構造体を定義できます

public struct S {

    public readonly int v;

    public S(int value) => v = value;

    public static S operator +(in S l, in S r)
        => new S(l.v + r.v);

}

2番目のプロジェクト(.NET Core 2.0コンソールアプリ)では、オーバーロードされた演算子を使用しようとしています。そのため、ライブラリプロジェクトにプロジェクト参照を追加しました。しかし、次のコードはコンパイルに失敗します。

class Program {

    static void Main(string[] args)
        => Console.WriteLine((new S(4) + new S(3)).v);

}

エラーメッセージ:

エラーCS0019:演算子「+」はタイプ「S」および「S」のオペランドに適用できません

詳細:

  • 最新C#バージョンを使用するように両方のプロジェクトを構成しましたC# 7.2
  • .NET CORE 2.0ターゲットフレームワークとして使用
  • 同じプロジェクトで使用するとコンパイルが機能します
  • およびin修飾子を削除すると、コンパイルが機能しますlr
  • ref修飾子foを使用するlrERROR CS0631
  • 私の環境:VS 201715.5.5コミュニティ
マイク・ズボレイ

これは、この問題でチームに報告されたコンパイラのバグです別のアセンブリのパラメータ内演算子を使用してください修正はマスターにあるようですが、15.5.6でも問題がまだ存在することを確認できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オーバーロードされた演算子deleteにデフォルトのパラメーターを設定できますか?

分類Dev

クラス宣言でオーバーロードされた演算子を使用できますか?

分類Dev

std :: coutは、構造体のオーバーロードされた '<<'演算子では機能しません

分類Dev

C ++の古い構造体演算子のオーバーロード構文が変更されましたか?

分類Dev

C#7'in 'パラメーターは演算子のオーバーロードで許可されます

分類Dev

パラメータ化された構造体の演算子は別の演算子に依存しています

分類Dev

C構造体をオーバーロードする演算子

分類Dev

テンプレート化された構造体の<<演算子をオーバーライドする

分類Dev

std :: functionパラメーターを使用したオーバーロードされた演算子

分類Dev

オーバーロードされた演算子のパラメーターが多すぎます、Visual Studio C ++

分類Dev

テンプレート構造で定義されたメンバー構造の演算子<<をオーバーロード

分類Dev

クラスメソッドのクラスと同じ名前空間で定義された構造体のオーバーロードされた演算子を呼び出す

分類Dev

三項演算子でオーバーロードされたメソッドを呼び出しますか?

分類Dev

std :: upper_boundの比較としてオーバーロードされたoperator()を持つ構造体を合法的に使用できますか?

分類Dev

<<演算子のオーバーロード:構造体のベクトルを使用した構造体

分類Dev

&演算子は、演算子のオーバーロードで使用されると何をしますか?

分類Dev

テンプレートパラメータがそれを提供する場合、条件付きで比較演算子のオーバーロードを提供します

分類Dev

非型テンプレート構造体のメンバー構造体のコピー代入演算子をオーバーロードします

分類Dev

オーバーロードされた演算子を使用して別の演算子のオーバーロードを実装しても大丈夫ですか?

分類Dev

演算子= C ++の異なるパラメータでオーバーロードしますか?

分類Dev

別の構造体内の構造体の演算子のオーバーロードはエラーを引き起こします

分類Dev

オーバーロードされた代入演算子を使用するとエラーが発生するのに、コンパイラが提供する演算子を使用できないのはなぜですか?

分類Dev

ネストされた列挙型のテンプレートパラメーターでオーバーロードするC ++フレンド演算子

分類Dev

この演算子のオーバーロードを構造体と同じ名前空間に配置できないのはなぜですか?

分類Dev

構造体メンバーのポインターはオーバーフローできますか?

分類Dev

オーバーライドされたメソッドをオーバーロードできますか?

分類Dev

キャッチテストでオーバーロードされた比較演算子を使用できません

分類Dev

関数名/パラメーターの直後で括弧の前に宣言された構造体。誰かがこのC構文を説明できますか?

分類Dev

エラー:オーバーロードされた演算子 '[]'の使用があいまいです

Related 関連記事

  1. 1

    オーバーロードされた演算子deleteにデフォルトのパラメーターを設定できますか?

  2. 2

    クラス宣言でオーバーロードされた演算子を使用できますか?

  3. 3

    std :: coutは、構造体のオーバーロードされた '<<'演算子では機能しません

  4. 4

    C ++の古い構造体演算子のオーバーロード構文が変更されましたか?

  5. 5

    C#7'in 'パラメーターは演算子のオーバーロードで許可されます

  6. 6

    パラメータ化された構造体の演算子は別の演算子に依存しています

  7. 7

    C構造体をオーバーロードする演算子

  8. 8

    テンプレート化された構造体の<<演算子をオーバーライドする

  9. 9

    std :: functionパラメーターを使用したオーバーロードされた演算子

  10. 10

    オーバーロードされた演算子のパラメーターが多すぎます、Visual Studio C ++

  11. 11

    テンプレート構造で定義されたメンバー構造の演算子<<をオーバーロード

  12. 12

    クラスメソッドのクラスと同じ名前空間で定義された構造体のオーバーロードされた演算子を呼び出す

  13. 13

    三項演算子でオーバーロードされたメソッドを呼び出しますか?

  14. 14

    std :: upper_boundの比較としてオーバーロードされたoperator()を持つ構造体を合法的に使用できますか?

  15. 15

    <<演算子のオーバーロード:構造体のベクトルを使用した構造体

  16. 16

    &演算子は、演算子のオーバーロードで使用されると何をしますか?

  17. 17

    テンプレートパラメータがそれを提供する場合、条件付きで比較演算子のオーバーロードを提供します

  18. 18

    非型テンプレート構造体のメンバー構造体のコピー代入演算子をオーバーロードします

  19. 19

    オーバーロードされた演算子を使用して別の演算子のオーバーロードを実装しても大丈夫ですか?

  20. 20

    演算子= C ++の異なるパラメータでオーバーロードしますか?

  21. 21

    別の構造体内の構造体の演算子のオーバーロードはエラーを引き起こします

  22. 22

    オーバーロードされた代入演算子を使用するとエラーが発生するのに、コンパイラが提供する演算子を使用できないのはなぜですか?

  23. 23

    ネストされた列挙型のテンプレートパラメーターでオーバーロードするC ++フレンド演算子

  24. 24

    この演算子のオーバーロードを構造体と同じ名前空間に配置できないのはなぜですか?

  25. 25

    構造体メンバーのポインターはオーバーフローできますか?

  26. 26

    オーバーライドされたメソッドをオーバーロードできますか?

  27. 27

    キャッチテストでオーバーロードされた比較演算子を使用できません

  28. 28

    関数名/パラメーターの直後で括弧の前に宣言された構造体。誰かがこのC構文を説明できますか?

  29. 29

    エラー:オーバーロードされた演算子 '[]'の使用があいまいです

ホットタグ

アーカイブ