Thread overview
struct construct with array
Mar 12, 2011
Caligo
Mar 12, 2011
Ali Çehreli
Mar 12, 2011
Ali Çehreli
March 12, 2011
struct Test{

  public double[3] ar_;
  this(double[3] ar){
    this.ar_ = ar;
  }
}

void main(){

  double[3] v1 = [1.0, 2.0, 3.0];
  double[3] v2 = [2.0, 3.0, 4.0];

  auto t1 = Test(v1[0..$] + v2[0..$]);     // error

}


I want to add those two arrays and call the constructor in one line, but I'm getting an error.  Any ideas?


March 12, 2011
On 03/12/2011 10:42 AM, Caligo wrote:
> struct Test{
>
>    public double[3] ar_;
>    this(double[3] ar){
>      this.ar_ = ar;
>    }
> }
>
> void main(){
>
>    double[3] v1 = [1.0, 2.0, 3.0];
>    double[3] v2 = [2.0, 3.0, 4.0];
>
>    auto t1 = Test(v1[0..$] + v2[0..$]);     // error
>
> }
>
>
> I want to add those two arrays and call the constructor in one line, but I'm
> getting an error.  Any ideas?
>

Even a simpler code doesn't work:

    double[3] v1 = [1.0, 2.0, 3.0];
    double[3] v2 = [2.0, 3.0, 4.0];

    auto result = v1[0..$] + v2[0..$];

Error: Array operation v1[0LU..__dollar] + v2[0LU..__dollar] not implemented

The following doesn't work either:

    auto result = v1[] + v2[];
    auto result = v1 + v2;

dmd does not implement those features yet.

Ali
March 12, 2011
On 03/12/2011 02:52 PM, Ali Çehreli wrote:
> On 03/12/2011 10:42 AM, Caligo wrote:
>> struct Test{
>>
>> public double[3] ar_;
>> this(double[3] ar){
>> this.ar_ = ar;
>> }
>> }
>>
>> void main(){
>>
>> double[3] v1 = [1.0, 2.0, 3.0];
>> double[3] v2 = [2.0, 3.0, 4.0];
>>
>> auto t1 = Test(v1[0..$] + v2[0..$]); // error
>>
>> }
>>
>>
>> I want to add those two arrays and call the constructor in one line,
>> but I'm
>> getting an error. Any ideas?
>>
>
> Even a simpler code doesn't work:
>
> double[3] v1 = [1.0, 2.0, 3.0];
> double[3] v2 = [2.0, 3.0, 4.0];
>
> auto result = v1[0..$] + v2[0..$];
>
> Error: Array operation v1[0LU..__dollar] + v2[0LU..__dollar] not
> implemented
>
> The following doesn't work either:
>
> auto result = v1[] + v2[];
> auto result = v1 + v2;
>
> dmd does not implement those features yet.
>
> Ali

I see from the other posts that the problem has something to do with auto. This works:

    double[3] v3 = v1[] + v2[];

Ali