выражения шаблона и C++ Visual Studio 2005 года

Я хотел бы создать olb3d библиотеку со своим компилятором Visual Studio 2005 года, но это перестало работать должный обработать ошибки по шаблону.

Чтобы быть точнее, следующее выражение, кажется, проблема:

void function(T u[Lattice<T>::d])

На веб-сайте проекта указан это prpably, мой компилятор не способен к таким сложным выражениям шаблона - нужно использовать gcc 3.4.1.

Мой вопрос состоит теперь в том, если существует способ обновить мой по сравнению с компилятором C++, таким образом, он может обработать выражения шаблона на уровне как gcc 3.4.1? Возможно, помогает, получаю ли я более новую версию Visual Studio?

Аплодисменты C.

1
задан James McNellis 11 May 2010 в 13:36
поделиться

2 ответа

Компилятор говорит, что не может вывести тип шаблона. Вы всегда можете помочь ему, указав сам тип в своем коде.

foo<int>(some_int_array);

Однако та часть между [] , которая спотыкается об это, совершенно бессмысленна. Массивы распадаются на указатели, и значение игнорируется в первую очередь. Вы можете просто прокомментировать эту часть, если это реальный пример.

Если вы возьмете массив по ссылке, VC++2005, похоже, также не имеет с ним никаких проблем:

template <class T>
void function(T (&arr)[Lattice<T>::n]);

(Возможно ли, что случай, который не компилируется, настолько бессмысленный, что никто никогда не удосужился проверить, работают ли такие вещи?)

0
ответ дан 3 September 2019 в 00:40
поделиться

Купите более новую версию Visual Studio. 2005 год довольно старый и не очень соответствует требованиям. Вы всегда можете сначала протестировать новый, загрузив Visual C ++ Express .

2
ответ дан 3 September 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: