<memory> operators
The latest version of this topic can be found at <memory> operators.
operator!= | operator> | operator>= |
operator< | operator<< | operator<= |
operator== |
operator!=
Tests for inequality between objects.
template <class Type, class Other>
bool operator!=(
const allocator<Type>& left,
const allocator<Other>& right) throw();
template <class T, class Del1, class U, class Del2>
bool operator!=(
const unique_ptr<T, Del1>& left,
const unique_ptr<U&, Del2>& right);
template <class Ty1, class Ty2>
bool operator!=(
const shared_ptr<Ty1>& left,
const shared_ptr<Ty2>& right);
Parameters
left
One of the objects to be tested for inequality.
right
One of the objects to be tested for inequality.
Ty1
The type controlled by the left shared pointer.
Ty2
The type controlled by the right shared pointer.
Return Value
true if the objects are not equal; false if objects are equal.
Remarks
The first template operator returns false. (All default allocators are equal.)
The second and third template operators return !(`` left
==
right``)
.
Example
// memory_op_me.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
allocator<double> Alloc;
vector <char>:: allocator_type v1Alloc;
if ( Alloc != v1Alloc )
cout << "The allocator objects Alloc & v1Alloc not are equal."
<< endl;
else
cout << "The allocator objects Alloc & v1Alloc are equal."
<< endl;
}
The allocator objects Alloc & v1Alloc are equal.
Example
// std_tr1__memory__operator_ne.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
int main()
{
std::shared_ptr<int> sp0(new int(0));
std::shared_ptr<int> sp1(new int(0));
std::cout << "sp0 != sp0 == " << std::boolalpha
<< (sp0 != sp0) << std::endl;
std::cout << "sp0 != sp1 == " << std::boolalpha
<< (sp0 != sp1) << std::endl;
return (0);
}
sp0 != sp0 == false
sp0 != sp1 == true
operator==
Tests for equality between objects.
template <class Type, class Other>
bool operator==(
const allocator<Type>& left,
const allocator<Other>& right) throw();
template <class Ty1, class Del1, class Ty2, class Del2>
bool operator==(
const unique_ptr<Ty1, Del1>& left,
const unique_ptr<Ty2, Del2>& right);
template <class Ty1, class Ty2>
bool operator==(
const shared_ptr<Ty1>& left;,
const shared_ptr<Ty2>& right);
Parameters
left
One of the objects to be tested for equality.
right
One of the objects to be tested for equality.
Ty1
The type controlled by the left shared pointer.
Ty2
The type controlled by the right shared pointer.
Return Value
true
if the objects are equal, false
if objects are not equal.
Remarks
The first template operator returns true. (All default allocators are equal.)
The second and third template operators return left.get() == right.get()
.
Example
// memory_op_eq.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
allocator<char> Alloc;
vector <int>:: allocator_type v1Alloc;
allocator<char> cAlloc(Alloc);
allocator<int> cv1Alloc(v1Alloc);
if ( cv1Alloc == v1Alloc )
cout << "The allocator objects cv1Alloc & v1Alloc are equal."
<< endl;
else
cout << "The allocator objects cv1Alloc & v1Alloc are not equal."
<< endl;
if ( cAlloc == Alloc )
cout << "The allocator objects cAlloc & Alloc are equal."
<< endl;
else
cout << "The allocator objects cAlloc & Alloc are not equal."
<< endl;
}
The allocator objects cv1Alloc & v1Alloc are equal.
The allocator objects cAlloc & Alloc are equal.
Example
// std_tr1__memory__operator_eq.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
int main()
{
std::shared_ptr<int> sp0(new int(0));
std::shared_ptr<int> sp1(new int(0));
std::cout << "sp0 == sp0 == " << std::boolalpha
<< (sp0 == sp0) << std::endl;
std::cout << "sp0 == sp1 == " << std::boolalpha
<< (sp0 == sp1) << std::endl;
return (0);
}
sp0 == sp0 == true
sp0 == sp1 == false
operator>=
Tests for one object being greater than or equal to a second object.
template <class T, class Del1, class U, class Del2>
bool operator>=(
const unique_ptr<T, Del1>& left,
const unique_ptr<U, Del2>& right);
template <class Ty1, class Ty2>
bool operator>=(
const shared_ptr<Ty1>& left,
const shared_ptr<Ty2>& right);
Parameters
left
One of the objects to be compared.
right
One of the objects to be compared.
Ty1
The type controlled by the left shared pointer.
Ty2
The type controlled by the right shared pointer.
Remarks
The template operators return left``.get() >=
right``.get()
.
operator<
Tests for one object being less than a second object.
template <class T, class Del1, class U, class Del2>
bool operator<(
const unique_ptr<T, Del1>& left,
const unique_ptr<U&, Del2>& right);
template <class Ty1, class Ty2>
bool operator<(
const shared_ptr<Ty1>& left,
const shared_ptr<Ty2>& right);
Parameters
left
One of the objects to be compared.
right
One of the objects to be compared.
Ty1
The type controlled by the left pointer.
Ty2
The type controlled by the right pointer.
operator<=
Tests for one object being less than or equal to a second object.
template <class T, class Del1, class U, class Del2>
bool operator<=(
const unique_ptr<T, Del1>& left,
const unique_ptr<U&, Del2>& right);
template <class Ty1, class Ty2>
bool operator<=(
const shared_ptr<Ty1>& left,
const shared_ptr<Ty2>& right);
Parameters
left
One of the objects to be compared.
right
One of the objects to be compared.
Ty1
The type controlled by the left shared pointer.
Ty2
The type controlled by the right shared pointer.
Remarks
The template operators return left``.get() <=
right``.get()
operator>
Tests for one object being greater than a second object.
template <class Ty1, class Del1, class Ty2, class Del2>
bool operator>(
const unique_ptr<Ty1, Del1>& left,
const unique_ptr<Ty2&, Del2gt;& right);
template <class Ty1, class Ty2>
bool operator>(
const shared_ptr<Ty1>& left,
const shared_ptr<Ty2>& right);
Parameters
left
One of the objects to be compared.
right
One of the objects to be compared.
Ty1
The type controlled by the left shared pointer.
Ty2
The type controlled by the right shared pointer.
operator<<
shared_ptr inserter.
template <class Elem, class Tr, class Ty>
std::basic_ostream<Elem, Tr>& operator<<(std::basic_ostream<Elem, Tr>& out,
shared_ptr<Ty>& sp);
Parameters
Elem
The type of the stream element.
Tr
The type the stream element traits.
Ty
The type controlled by the shared pointer.
out
The output stream.
sp
The shared pointer.
Remarks
The template function returns out << sp.get()
.
Example
// std_tr1__memory__operator_sl.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
int main()
{
std::shared_ptr<int> sp0(new int(5));
std::cout << "sp0 == " << sp0 << " (varies)" << std::endl;
return (0);
}
sp0 == 3f3040 (varies)