Распределители: «Нет доступных участников». Как я могу это исправить? - PullRequest
0 голосов
/ 08 октября 2019

Итак, в нижней строке представленного кода у меня есть предупреждение IntelliSense: «Нет доступных членов». В чем дело? В обычном случае, кажется, есть опции, такие как «распределять», «освобождать» и т. Д.

namespace MyLib
{
    template <typename T,
        template <typename Y> class Allocator = std::allocator>
    class Vector
    {
    private:
        std::size_t capacityV;
        std::size_t sizeV;
        T* arr;
    public:
        typedef Allocator<T> AllocatorType;
        typedef Vector<T, Allocator> VectorType;
        template<typename T>
        using AllocTraits = std::allocator_traits<Allocator<T>>;

        std::allocator_traits<Allocator<T>>::    //HERE!

На самом деле, std::allocator_traits<std::allocator<T>>:: тоже не работает. Но работает в этих случаях (просто как std::allocator_traits<Allocator<T>>::):

template <
    typename T,
    template <typename Y> class Allocator = std::allocator> // use std::allocator as default allocator
std::unique_ptr<T, std::function<void(T*)>> move_with_allocator(
    T&& stack_object, Allocator<T> allocator = Allocator<T>())
{
    using AllocTraits = std::allocator_traits<Allocator<T>>;
    std::allocator_traits<std::allocator<T>>::allocate(allocator, 1);    //WORKING FINE HERE

Visual Studio 2019

1 Ответ

1 голос
/ 08 октября 2019

Я подозреваю, что вы хотите Шаблон Intellisense . Intellisense может дать лучшие подсказки, если у него есть представление о возможных параметрах шаблона.

...