我可以在重载的结构运算符中使用常量参数吗?

Can I use constant parameters in overloaded struct operators?

我可以在 .NET Core 2.0 class 库中定义以下不可变结构:

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);

}

在第二个项目(.NET Core 2.0 控制台应用程序)中,我尝试使用重载运算符。因此,我添加了对库项目的项目引用。但是下面的代码编译失败:

class Program {

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

}

错误信息:

Error CS0019: Operator '+' cannot be applied to operands of type 'S' and 'S'

详情:

这是一个编译器错误,已在本期报告给团队:Use in-parameter operator from different assembly。看起来修复在 master 中,但我可以确认问题在 15.5.6 中仍然存在。