mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: explicit convert to bool operator for autoPtr
- behaves the same as the valid() method, but can be queried directly
like a normal raw pointer and as per std::unique_ptr.
Eg,
autoPtr<T> ptr = ...
if (ptr) ...
This commit is contained in:
@ -143,7 +143,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
Info<<"now have valid=" << Switch(list.valid()).c_str();
|
||||
|
||||
if (list.valid())
|
||||
if (list)
|
||||
{
|
||||
Info<< nl
|
||||
<< flatOutput(*list) << " @ " << long(list->cdata())
|
||||
@ -153,6 +153,22 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
Info<< nl;
|
||||
}
|
||||
|
||||
// These should fail to compile
|
||||
#if 0
|
||||
label val0 = 0;
|
||||
|
||||
if (true)
|
||||
{
|
||||
val0 = list;
|
||||
}
|
||||
|
||||
label val1 = 10;
|
||||
|
||||
if (val1 == list)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Memory transfer
|
||||
|
||||
@ -234,6 +234,8 @@ public:
|
||||
operator const T&() const = delete;
|
||||
#endif
|
||||
|
||||
//- True if the managed pointer is non-null
|
||||
explicit inline operator bool() const noexcept;
|
||||
|
||||
//- Transfer object ownership from parameter
|
||||
inline void operator=(autoPtr<T>&& ap) noexcept;
|
||||
|
||||
@ -260,6 +260,13 @@ inline const T& Foam::autoPtr<T>::operator()() const
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
inline Foam::autoPtr<T>::operator bool() const noexcept
|
||||
{
|
||||
return ptr_;
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
inline void Foam::autoPtr<T>::operator=(autoPtr<T>&& ap) noexcept
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user