On Fri, Sep 21, 2012 at 11:57 PM, Neil <n...@parkwaycc.co.uk> wrote: > That's not a very enlightening description of a use case... which overloads > do you already have, and which one is the compiler using when you don't want > it to?
I had void operator=(const jArray<T,L>& other) where jArray is a struct and void operator=(L zero) where L is in practice int32_t and argument zero is only ever 0. The person who did the nullptr conversion was apparently not OK with the nullptr to 0 implicit conversion causing a warning, so I figure I must not re-introduce that conversion. On Fri, Sep 21, 2012 at 5:22 PM, Rafael Ávila de Espíndola <respind...@mozilla.com> wrote: > In code that uses c++11 you can use > > typedef decltype(nullptr) foobar; This seems to work. Thanks. Now I have: void operator=(const jArray<T,L>& other) { delete[] arr; arr = other.arr; length = other.length; } #ifdef MOZ_HAVE_CXX11_NULLPTR typedef decltype(nullptr) jArray_nullptr_t; void operator=(jArray_nullptr_t zero) { // Make assigning null to an array in Java delete the buffer in C++ delete[] arr; arr = nullptr; length = 0; } #else void operator=(L zero) { // Make assigning null to an array in Java delete the buffer in C++ NS_ASSERTION(!zero, "Non-zero integer assigned to jArray."); delete[] arr; arr = nullptr; length = 0; } #endif -- Henri Sivonen hsivo...@iki.fi http://hsivonen.iki.fi/ _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform