нет члена с именем 'array' в пространстве имен 'std' - PullRequest
0 голосов
/ 04 декабря 2018

Я сейчас изучаю C ++ и получаю эту странную ошибку.

Код выглядит следующим образом:

#include <iostream>
#include <array>
using std::cout;
using std::endl;
using std::ostream;
using std::array;

template <typename T, size_t dim>
ostream& operator<<(ostream& os, const array<T,dim>& a) {
    os << "[ ";
    for (auto n : a)
        os << n << " ";
    os << "]";
    return os;
}

int main() 
{
    cout << endl << "--- " << __FILE__ << " ---" << endl << endl;

    array<int,3> a1 { 2,3,5 };                              // (A)
    array<int,0> a2 {  };                                   // (B)
    array<int,2> a3 { 1 };                                  // (C)
    // array<int> x1 { 1, 2, 3 };                           // (D)
    // array<int,3> x2 { 1,2,3,4 };
    array<int,3> a4 = { 1,2,3 };                            // (E)
    array<int,3> a5 { { 4,5,6 } };                          // (F)

    cout << "01|    a1=" << a1 << endl;
    cout << "02|    a2=" << a2 << endl;
    cout << "03|    a3=" << a3 << endl;
    cout << "04|    a4=" << a4 << endl;
    cout << "05|    a5=" << a5 << endl;

    cout << endl << "--- " << __FILE__ << " ---" << endl << endl;
    return 0;
}

Моя IDE (код Visual Studio) показывает мне ошибку,хотя код компилируется и работает.

Вот make-файл, предоставленный нашим проф.

# compiler settings
CXX = g++-7
# CXX = clang++
CXXFLAGS = -ansi -pedantic -Wall -Wextra -Wconversion -pthread -std=c++17
LDFLAGS = -lm

# collect  files
CXXEXAMPLES = $(shell find . -name '*.cpp' -print -type f)
CXXTARGETS = $(foreach file, $(CXXEXAMPLES), ./out/$(file:.cpp=.out))

# build them all
all: $(CXXTARGETS)

out/%.out: %.cpp
    $(CXX) $(CXXFLAGS)  $< $(LDFLAGS) -o $@

clean:
    rm out/*

Я использую Ubuntu 16.04 и подумал, что это может быть проблема с компилятором, поэтому я изменил "CXX"to" CXX = g ++ - 7 ", потому что нам рекомендовали использовать g ++ версии 7, но это не помогло.При вводе "g ++ -v" это показывает, что мой gcc - версия 5.5.0, но ввод "apt list -installed" показывает, что установлен g ++ - 7.

Я не нашел никакого решения в Интернете, так какбольшинство схожих проблем, часто возникающих вокруг пропущенных включений.

VS Код также не распознает некоторые типы определений переменных, таких как «int n {1}». Он также жалуется на «использование необъявленного идентификатора» в строках (A) к (E)

Я предполагаю, что проблема заключается в компиляторе кода VS с использованием другого / старого распознавания синтаксиса.Но я не знаю, как это изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...