Reference

function template
<memory>

std::const_pointer_cast

template <class T, class U> shared_ptr<T> const_pointer_cast (const shared_ptr<U>& sp) noexcept;
Const cast of shared_ptr
Returns a copy of sp of the proper type with its stored pointer const casted from U* to T*.

If sp is not empty, the returned object shares ownership over sp's resources, increasing by one the use count.

If sp is empty, the returned object is an empty shared_ptr.

The function can only cast types for which the following expression would be valid:
1
const_cast<T*>(sp.get())

Parameters

sp
A shared_pointer.
U* shall be convertible to T* using const_cast.

Return Value

A shared_ptr object that owns the same pointer as sp (if any) and has a shared pointer that points to the same object as sp with a potentially different const-qualification.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// static_pointer_cast example
#include <iostream>
#include <memory>
int main () {
 std::shared_ptr<int> foo;
 std::shared_ptr<const int> bar;
 foo = std::make_shared<int>(10);
 bar = std::const_pointer_cast<const int>(foo);
 std::cout << "*bar: " << *bar << '\n';
 *foo = 20;
 std::cout << "*bar: " << *bar << '\n';
 return 0;
}

Output:
*bar: 10
*bar: 20


See also

dynamic_pointer_cast
Dynamic cast of shared_ptr (function template)
static_pointer_cast
Static cast of shared_ptr (function template)
shared_ptr
Shared pointer (class template)

AltStyle によって変換されたページ (->オリジナル) /