# std::get_temporary_buffer

From cppreference.com
< cpp‎ | memory

Defined in header `<memory>` |  |
template< class T > std::pair < T*, std::ptrdiff_t > get_temporary_buffer( std::ptrdiff_t count ); |  | (deprecated in C++17) (removed in C++20)

Allocates uninitialized contiguous storage, which should be sufficient to store up to `count` adjacent objects of type `T`. The request is non-binding and the implementation may allocate less or more than necessary to store `count` adjacent objects.

### Parameters

count | - | the desired number of objects

### Return value

An std::pair holding a pointer to the beginning of the allocated storage and the number of objects that fit in the storage that was actually allocated.

If no memory could be allocated, or allocated storage is not enough to store a single element of type `T`, the `first` element of the result is a null pointer and the `second` element is zero.

### Exceptions

(none) | (until C++11)
`noexcept` specification: noexcept | (since C++11)

### Example

Run this code

    #include <algorithm>
    #include <iostream>
    #include <memory>
    #include <string>
    #include <iterator>

    int main()
    {
        const std::string s[] = {"string", "1", "test", "..."};
        const auto p = std::get_temporary_buffer<std::string>(4);
        // requires that p.first is passed to return_temporary_buffer
        // (beware of early exit points and exceptions)

        std::copy(s, s + p.second,
                  std::raw_storage_iterator<std::string*, std::string>(p.first));
        // requires that each string in p is individually destroyed
        // (beware of early exit points and exceptions)

        std::copy(p.first, p.first + p.second,
                  std::ostream_iterator<std::string>{std::cout, "\n"});

        std::for_each(p.first, p.first + p.second, [](std::string& e) {
            e.~basic_string<char>();
        });

        std::return_temporary_buffer(p.first);
    }

Output:

    string
    1
    test
    ...

### See also

return_temporary_buffer (deprecated in C++17)(removed in C++20) | frees uninitialized storage (function template)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/get_temporary_buffer&oldid=102550"