# Ndim (\>=3) Array constructors without argument does not work

**URL:** <https://discourse.julialang.org/t/ndim-3-array-constructors-without-argument-does-not-work/2353>\
**Category:** General Usage\
**Tags:** question\
**Created:** [February 27, 2017, 10:06pm UTC](https://discourse.julialang.org/t/ndim-3-array-constructors-without-argument-does-not-work/2353 "2017-02-27T22:06:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![BVPs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bvps/32/2190_2.png) [@BVPs](https://discourse.julialang.org/u/BVPs)\
**Post date:** [February 27, 2017, 10:06pm UTC](https://discourse.julialang.org/t/ndim-3-array-constructors-without-argument-does-not-work/2353/1 "2017-02-27T22:06:21Z")

</div>

Hi, I am wondering why the default constructors without an argument for `Array`, e.g., `Array{Float64,1}()` and `Array{Float64,2}()` work without any problems while `Array{Float64,3}()` gives the following error?

```julia
Closest candidates are:
  Array{Float64,3}{T,N}(!Matched::Tuple{Vararg{Int64,N}}) at boot.jl:310
  Array{Float64,3}{T}(!Matched::Int64, !Matched::Int64, !Matched::Int64) at boot.jl:316
  Array{Float64,3}{T}(!Matched::Any) at sysimg.jl:53

```

On the other hand, `zeros(0); zeros(0,0); zeros(0,0,0)` all work.  
Thanks!  
BVPs

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [February 27, 2017, 10:24pm UTC](https://discourse.julialang.org/t/ndim-3-array-constructors-without-argument-does-not-work/2353/2 "2017-02-27T22:24:36Z")

</div>

On 0.6 (master) we decided that a zero size `Vector`/`Matrix` isn’t special enough so the sizes are required and the `Vector{T}()` constructors are deprecated.

---

<div class="post-metadata">

**Author:** ![BVPs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bvps/32/2190_2.png) [@BVPs](https://discourse.julialang.org/u/BVPs)\
**Post date:** [February 27, 2017, 10:59pm UTC](https://discourse.julialang.org/t/ndim-3-array-constructors-without-argument-does-not-work/2353/3 "2017-02-27T22:59:45Z")

</div>

@yuyichao: thanks! Then in v0.6, should ```zeros(0); zeros(0,0); zeros(0,0,0)```` etc., still work?

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [February 27, 2017, 11:05pm UTC](https://discourse.julialang.org/t/ndim-3-array-constructors-without-argument-does-not-work/2353/4 "2017-02-27T23:05:47Z")

</div>

Yes, they should, just like the `Array{...}(x, y, z...)`s. The removal (deprecation) of `Vector{T}()` and `Matrix{T}()` just make this more consistent (since you can’t do `zeros()` and get a 1 or 2d array anyway…)

```julia
julia> zeros(0)
0-element Array{Float64,1}

julia> zeros(0, 0)
0×0 Array{Float64,2}

julia> zeros(0, 0, 0)
0×0×0 Array{Float64,3}

julia> Array{Float64,1}(0)
0-element Array{Float64,1}

julia> Array{Float64,2}(0, 0)
0×0 Array{Float64,2}

julia> Array{Float64,3}(0, 0, 0)
0×0×0 Array{Float64,3}

julia> Array{Float64}(0)
0-element Array{Float64,1}

julia> Array{Float64}(0, 0)
0×0 Array{Float64,2}

julia> Array{Float64}(0, 0, 0)
0×0×0 Array{Float64,3}

```

---

<div class="post-metadata">

**Author:** ![BVPs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bvps/32/2190_2.png) [@BVPs](https://discourse.julialang.org/u/BVPs)\
**Post date:** [February 27, 2017, 11:08pm UTC](https://discourse.julialang.org/t/ndim-3-array-constructors-without-argument-does-not-work/2353/5 "2017-02-27T23:08:18Z")

</div>

Thank you very much, @yuyichao! Then, I’ll start revising my codes accordingly to prepare for v0.6.
