#include <bits/stdc++.h>
using namespace std;

template<class T, size_t N>
struct StaticAllocator {
    using value_type = T;

    StaticAllocator() noexcept {}

    template<class U>
    StaticAllocator( const StaticAllocator<U, N>& other ) noexcept {}

    T* allocate( size_t n ) noexcept
    {
        /* TBD */
        return nullptr;
    }

    void deallocate( T* p, size_t n ) noexcept
    {
        /* TBD */
    }
};

int main()
{
    using A = StaticAllocator<int, 256>;
    using T = allocator_traits<A>;
    static_assert( is_same<T::value_type, int>::value, "" );   // ok

    A a;
    vector<int, A> v( a );
    v.push_back( 42 );
}
