[Dune-devel] [Dune-Commit] [Commit] dune-common - 2fff527: [Release][Array] Provide a function for creating an array filled with copies of a single element
Oliver Sander
sander at igpm.rwth-aachen.de
Mon Dec 16 18:37:25 CET 2013
>
> Because std::fill() (or array.fill(val)) doesn't really help me at all when trying to fix the deprecation warnings in PDELab ;-)
> Throughout PDELab, there are several places where a YaspGrid is initialized as a member variable in a constructor, and
> in that case creating an array and filling it in a second step just doesn't work. Code like this:
>
> MyObject(…)
> : _grid(Dune::FieldVector<double,dim>(1.0),Dune::fill_array<int,dim>(n),std::bitset<dim>(false),0)
> , ….
>
> Unfortunately, the standard doesn't provide an array constructor that copies a given object to all array elements...
>
You could store the YaspGrid in a smart pointer. That would allow to
avoid the new fill_array code. It is just one of these tiny things that
are very difficult to ever remove again.
If you insist on keeping it, could you please document the use-case you just
described?
Best,
Oliver
>>
>> Is it going to go away when we kill our own array implementation?
>
> Well, we'll need it until the standard gets amended… ;-)
>
> Steffen
>
>>
>> Cheers,
>> Oliver
>>
>> Am 16.12.2013 17:04, schrieb Steffen Müthing:
>>> New commit, appeared at Mon Dec 16 17:04:40 2013 +0100
>>> as part of the following ref changes:
>>>
>>> branch refs/heads/master updated from 9f1a112 -> 2fff527
>>>
>>> Browsable version: http://cgit.dune-project.org/repositories/dune-common/commit/?id=2fff527599173a8da0ce38a7c9d7f38053f04122
>>>
>>> ======================================================================
>>>
>>> commit 2fff527599173a8da0ce38a7c9d7f38053f04122
>>> Author: Steffen Müthing <muething at dune-project.org>
>>> Date: Mon Dec 16 17:02:12 2013 +0100
>>>
>>> [Release][Array] Provide a function for creating an array filled with copies of a single element
>>>
>>> The new YaspGrid constructors require an array with the number of cells
>>> in each direction. Unfortunately, there is no array constructor that
>>> takes a single element and copies it to all array elements.
>>>
>>> This patch adds a simple function Dune::fill_array() to do just that.
>>>
>>> dune/common/array.hh | 17 +++++++++++++++++
>>> 1 file changed, 17 insertions(+)
>>>
>>>
>>>
>>> diff --git a/dune/common/array.hh b/dune/common/array.hh
>>> index cf2cf3a..5b550d3 100644
>>> --- a/dune/common/array.hh
>>> +++ b/dune/common/array.hh
>>> @@ -253,6 +253,23 @@ namespace Dune
>>> return result;
>>> }
>>>
>>> + //! Create an array and fill it with copies of the provided value.
>>> + /**
>>> + * \note This method is Dune-specific and not part of any C++ standard.
>>> + */
>>> + template<typename T, std::size_t n>
>>> + array<T,n> fill_array(const T& t)
>>> + {
>>> + array<T,n> r;
>>> + r.fill(t);
>>> + std::cout << "test" << std::endl;
>>> +#if HAVE_RVALUE_REFERENCES
>>> + return std::move(r);
>>> +#else
>>> + return r;
>>> +#endif
>>> + }
>>> +
>>> /** @} */
>>>
>>> } // end namespace Dune
>>>
>>> _______________________________________________
>>> Dune-Commit mailing list
>>> Dune-Commit at dune-project.org
>>> http://lists.dune-project.org/mailman/listinfo/dune-commit
>>>
>>
>>
>> _______________________________________________
>> Dune-devel mailing list
>> Dune-devel at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune-devel
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 551 bytes
Desc: OpenPGP digital signature
URL: <https://lists.dune-project.org/pipermail/dune-devel/attachments/20131216/806df9b1/attachment.sig>
More information about the Dune-devel
mailing list