Re: D Uniform initialization {}

2016-10-22 Thread mogu via Digitalmars-d

On Sunday, 23 October 2016 at 01:31:47 UTC, Seb wrote:
On Saturday, 22 October 2016 at 21:26:53 UTC, Patric Dexheimer 
wrote:

S[] s = [{ 1, 2 }];

Nice, did´n knew that it worked.

On Friday, 21 October 2016 at 21:41:16 UTC, Daniel Kozak wrote:
Because there is no need. In c++ it is disaster because there 
is milion way how to initialize something, it is really hard 
to understand and inconsistent


I never really felt lost about it with c++, but the argument 
holds true anyway :)


There has been a abandoned proposal for struct initialization:
https://github.com/dlang/DIPs/pull/22


It has been closed only because of inactivity.


Re: D Uniform initialization {}

2016-10-22 Thread Seb via Digitalmars-d
On Saturday, 22 October 2016 at 21:26:53 UTC, Patric Dexheimer 
wrote:

S[] s = [{ 1, 2 }];

Nice, did´n knew that it worked.

On Friday, 21 October 2016 at 21:41:16 UTC, Daniel Kozak wrote:
Because there is no need. In c++ it is disaster because there 
is milion way how to initialize something, it is really hard 
to understand and inconsistent


I never really felt lost about it with c++, but the argument 
holds true anyway :)


There has been a abandoned proposal for struct initialization:
https://github.com/dlang/DIPs/pull/22


Re: D Uniform initialization {}

2016-10-22 Thread Patric Dexheimer via Digitalmars-d

S[] s = [{ 1, 2 }];

Nice, did´n knew that it worked.

On Friday, 21 October 2016 at 21:41:16 UTC, Daniel Kozak wrote:
Because there is no need. In c++ it is disaster because there 
is milion way how to initialize something, it is really hard to 
understand and inconsistent


I never really felt lost about it with c++, but the argument 
holds true anyway :)


Re: D Uniform initialization {}

2016-10-21 Thread Daniel Kozak via Digitalmars-d

Dne 21.10.2016 v 23:21 Patric Dexheimer via Digitalmars-d napsal(a):


On Friday, 21 October 2016 at 19:20:25 UTC, Daniel Kozak wrote:

Dne 21.10.2016 v 20:49 Patric Dexheimer via Digitalmars-d napsal(a):

Quite sure that this was already discussed, but.. any chance of this 
on D?

No (I hope so)


There are a lot of places where it should make the code clear.

Can you elaborate on this?
I always have to create shorter aliases for the most used structs. 
(which i think is awkward sometimes)

Why? (I do not see any relation to Uniform initialization)


egs:
//D
alias vec3 = Tuple!(float, "x", float, "y", float, "z");
vec3[] vectors = [
   vec3(1.0,0.0,1.0),
   vec3(2.0,1.0,1.0),
   vec3(3.0,2.0,1.0)
];
//C++ equivalent
vec3 vectors[] = {
   {1.0,0.0,1.0},
   {2.0,1.0,1.0},
   {3.0,2.0,1.0}
};


this works for D too:

import std.stdio;

struct S
{
int a;
int b;
}
void main()
{
S[] s = [{ 1, 2 }];
writeln(s[0]);
}



//D
auto return_value = get_struct(); //don´t need to write the return type
set_struct( StructName(value1, value2) );
//C++
set_struct( {value1, value2} ); //don´t need to write the argument type
OK this does not work but I do not think it is releated to Uniform 
initialization, but it is more something like cast to parametr type or 
something like that


Can you explain why you think is a bad idea?
Because there is no need. In c++ it is disaster because there is milion 
way how to initialize something, it is really hard to understand and 
inconsistent


Re: D Uniform initialization {}

2016-10-21 Thread Patric Dexheimer via Digitalmars-d

On Friday, 21 October 2016 at 19:20:25 UTC, Daniel Kozak wrote:
Dne 21.10.2016 v 20:49 Patric Dexheimer via Digitalmars-d 
napsal(a):


Quite sure that this was already discussed, but.. any chance 
of this on D?

No (I hope so)


There are a lot of places where it should make the code clear.

Can you elaborate on this?
I always have to create shorter aliases for the most used 
structs. (which i think is awkward sometimes)

Why? (I do not see any relation to Uniform initialization)


egs:
//D
alias vec3 = Tuple!(float, "x", float, "y", float, "z");
vec3[] vectors = [
   vec3(1.0,0.0,1.0),
   vec3(2.0,1.0,1.0),
   vec3(3.0,2.0,1.0)
];
//C++ equivalent
vec3 vectors[] = {
   {1.0,0.0,1.0},
   {2.0,1.0,1.0},
   {3.0,2.0,1.0}
};

//D
auto return_value = get_struct(); //don´t need to write the 
return type

set_struct( StructName(value1, value2) );
//C++
set_struct( {value1, value2} ); //don´t need to write the 
argument type


//D in case of large struct names
alias v = VeryLargeStructName; //not cool
v[] vectors = [
   v(1.0,0.0,1.0),
   v(2.0,1.0,1.0),
   v(3.0,2.0,1.0)
];


I find myself falling with frequency on examples that will 
benefit from the c++ uniform initialization.


"No (I hope so)"

Can you explain why you think is a bad idea?


Re: D Uniform initialization {}

2016-10-21 Thread Daniel Kozak via Digitalmars-d

Dne 21.10.2016 v 20:49 Patric Dexheimer via Digitalmars-d napsal(a):

Quite sure that this was already discussed, but.. any chance of this 
on D?

No (I hope so)


There are a lot of places where it should make the code clear.

Can you elaborate on this?
I always have to create shorter aliases for the most used structs. 
(which i think is awkward sometimes)

Why? (I do not see any relation to Uniform initialization)



D Uniform initialization {}

2016-10-21 Thread Patric Dexheimer via Digitalmars-d
Quite sure that this was already discussed, but.. any chance of 
this on D?

(one of the few things that i miss from c++)

There are a lot of places where it should make the code clear.
I always have to create shorter aliases for the most used 
structs. (which i think is awkward sometimes)


I know there is the case of being ambiguous with lambdas, but 
after reading this thread 
https://forum.dlang.org/thread/nud21i$o29$1...@digitalmars.com

uniform initialization comes to my mind again :)