• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <memory>

    std::allocator::max_size

    size_type max_size() const throw();  // C++03
    size_type max_size() const noexcept; // C++11
    

    この関数は、C++17から非推奨となり、C++20で削除された。代わりにstd::allocator_traits::max_size()関数を使用すること。

    概要

    一度に確保可能なメモリの最大サイズを取得する。

    戻り値

    allocate(N, 0)が成功するであろう最大のNを返す。

    非推奨・削除の詳細

    多くのメンバ関数は、アロケータの実装によらず、共通に定義できるものだった。そのため、アロケータの中間インタフェースであるstd::allocator_traitsクラスに、共通のデフォルト実装を定義することとなった。

    特殊なアロケータの実装では、この関数を独自に実装する必要があるかもしれない。その場合はstd::allocator_traitsのデフォルト機能を使用せずに、この関数を独自アロケータのインタフェースとして定義すれば、std::allocator_traitsクラスを介してインタフェースにアクセスしたとしても、その独自実装が使用される。

    少なくとも、std::allocatorクラスのあらゆる標準ライブラリの実装において、この関数は特殊な動作をする必要がないため、std::allocator_traitsクラスのデフォルト実装に任せることとなった。

    #include <iostream>
    #include <memory>
    
    int main()
    {
      std::allocator<int> alloc;
    
      std::cout << alloc.max_size() << std::endl;
    }
    

    出力例

    4611686018427387903
    

    参照