Skip to content

#829 Dune::array<T,n> has 'int' as the type for n while std::array has 'size_t'

Metadata

Property Value
Reported by Jö Fahlke (jorrit@jorrit.de)
Reported at Oct 21, 2010 11:05
Type Bug Report
Version Git (pre2.4) [autotools]
Operating System Unspecified / All
Last edited by Christian Engwer (christi@conan.iwr.uni-heidelberg.de)
Last edited at Oct 24, 2010 12:56
Closed by Christian Engwer (christi@conan.iwr.uni-heidelberg.de)
Closed at Oct 24, 2010 12:56
Closed in version Unknown
Resolution Fixed
Comment Since rev 6200 Dune::array uses size_t

Description

Dune's replacement implementation of array is declared as

template<class T, int n> struct array;

The standard implementation is however declared as

template<class T, size_t n> struct array;

This is problematic, since specializing for array will not work properly:

template struct hurz;

// this will not match the array imported from C++0x template<class T, int n> struct hurz<array<T,n> >;

// this will not match Dune's reimplementation of array template<class T, std::size_t n> struct hurz<array<T,n> >;

I am reluctant to simply change this however. There may actually be specialisations in Dune which assume n is an 'int'. We should check for those before changing this.

There may also be similar specializations in user modules, but I guess there is little we can do about those.