Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.04.2017
Сообщений: 2

Необъявленный идентификатор в шаблоне функции

18.04.2017, 21:13. Показов 3569. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Пишу простенькую программку, но возникла проблема в коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
template <typename T>
T maxn(const T array[arrS], int arrS)
{
    T max = array[0];
    for (int i = 1; i < arrS; i++)
        if (m[i] > max)
            max = m[i];
    return max; 
}
Почему компилятор утверждает: "arrS: необъявленный идентификатор"?
При этом, если arrS поменять на count, то компилятор перестает возмущаться.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2017, 21:13
Ответы с готовыми решениями:

Ошибка в объявлении функции (необъявленный идентификатор)
#pragma once #include &lt;cstring&gt; typedef unsigned int ui; int GetNumberInt(); double GetNumberFloat(); bool GetBool(); void...

необъявленный идентификатор
Код функции: void Logic(){ int prevX = tailX; //хвост int prevY = tailY; int prev2X, prev2Y; for(i = 1; i &lt; nTail; i++){ ...

Необъявленный идентификатор j
Нужно сформировать квадратную матрицу вида: 1 2 ...... n n n-1 ..... 1 1 2 ...... n n n-1 ..... 1 ............... ...

21
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
19.04.2017, 18:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Я пока не увидел никакого объяснения, кроме непрерывного повторения мантры "из-за отсутствия two-phase name lookup", "из-за отсутствия two-phase name lookup"...
а ведь господин TheCalligrapher чертовски прав!
при детальном изучении вопроса,
лично я пришёл к выводу:
что это баг в компиляторах cl.

рассмотрим такой пример:

C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
// --- нигде не был инстанцирован
template<class T>
    using ololo = T[count];
 
int main(){}
error C2440: 'initializing': cannot convert from 'iterator_traits<_Iter>::difference_type (__cdecl *)(_InIt,_InIt,const _Ty &)' to 'size_t'
однофазный cl так же, как и gcc валидирует синтаксис использования имен,
не зависящих от параметра шаблона,
в объявлении самого шаблона.

тобишь cl пасет "общий синтаксис" объявления шаблона.

так что его "однофазность" здесь не при делах

однако для конструкции вида:
C++
1
2
template <typename T>
T maxn(const T array[count])
такое чувство, cl убедился, что count существует,
и не стал заморачиваться проверкой:
может ли существовать тип данных:

const T[имя-шаблоно-функции]
такое чувство, что просто забил болт.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.04.2017, 23:29
Согласен, ещё раз внимательно изучив вопрос, понял что по идее данная ошибка должна отлавливаться на первой фазе, всё-таки count не связан с параметром шаблона. Был не прав.

Спасибо ув. Коту в шляпе за то, что не поддался на общую провокацию и настоял на ошибочном мнении.
Ну просто особенность компилирования VS компилятором, шаблоны, ... ну вы понимаете. Сразу всплывает в голове измыленная тема с отсутствием "two phase lookup". Даже Microsoft по приоритетам исправлений это высоко поставил. У меня это ещё и попало "на злобу дня".
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.04.2017, 23:29

Необъявленный идентификатор
Нужно исправить код, некоторые ошибки я нашел, но ничего не могу поделать с i (i: необъявленный идентификатор), (идентификатор i не...

Необъявленный идентификатор
И снова ВСЕМ добрый вечер!!!:) Написав десяток примеров из книги, в качестве упражнений для себя и закрепления материала решил на...

Необъявленный идентификатор
Думаю проблему в скобках, где не могу найти=( #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; void main() { ...

необъявленный идентификатор
#include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int vichis(int,int,int&amp;); void cifri(int); void main() { int a; ...

Необъявленный идентификатор
Кто знает, где ошибка в этом коде? double *increase(unsigned int size, double *n) { double *new_n; for (int var = 0; var &lt;= size...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru