www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.ide
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript
electronics




digitalmars.D - implicit conversions between array and pointer

↑ ↓ ← terranium <terranium yandex.ru> writes:
int* p;
int[] a=[1,2,3];
p=a;

spec says it should compile, but it won't. Where is the bug - in spec or in
compiler.
Apr 25 2008
→ Frank Benoit <keinfarbton googlemail.com> writes:
terranium schrieb:
 int* p;
 int[] a=[1,2,3];
 p=a;
 
 spec says it should compile, but it won't. Where is the bug - in spec or in
compiler.

In the spec, the implicit convertions to .ptr property was removed some time ago. p=a.ptr;
Apr 25 2008
"Janice Caron" <caron800 googlemail.com> writes:
On 25/04/2008, terranium <terranium yandex.ru> wrote:
 int* p;
  int[] a=[1,2,3];
  p=a;

  spec says it should compile, but it won't. Where is the bug - in spec or in
compiler.

If I had to guess, I'd say the spec is wrong. It's a narrowing conversion. Data is lost. To mind, that means it ought to require an explicit cast.
Apr 25 2008
↑ ↓ → terranium <terranium yandex.ru> writes:
Hmm... It's ref types, they are casted differently.
Apr 25 2008
"Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"terranium" <terranium yandex.ru> wrote in message 
news:futcip$peg$1 digitalmars.com...
 int* p;
 int[] a=[1,2,3];
 p=a;

 spec says it should compile, but it won't. Where is the bug - in spec or 
 in compiler.

You must be looking at a terribly out-of-date spec. http://www.digitalmars.com/d/1.0/arrays.html See the "Implicit conversions" section. As was mentioned, implicit conversion from T[] to T* was removed more than a year ago.
Apr 26 2008
↑ ↓ terranium <spam here.lot> writes:
 You must be looking at a terribly out-of-date spec.
 
 http://www.digitalmars.com/d/1.0/arrays.html
 
 See the "Implicit conversions" section.  As was mentioned, implicit 
 conversion from T[] to T* was removed more than a year ago. 

this section is for objects - reference types, I'm talking about value types. Look at sections Usage and Strings. int* p; int[3] s; int[] a; p = s; // p points to the first element of the array s. p = a; // p points to the first element of the array a. char[] str; char* p = str; // pointer to 1st element Of course array of ref types can't be converted to pointer to this ref type because D doesn't support pointers to ref types.
Apr 26 2008
↑ ↓ → terranium <spam here.lot> writes:
oops, my bad.
Apr 26 2008