2010-05-11 3 views
1

Я хотел бы построить библиотеку olb3d вместе с моим компилятором visual studio 2005, но это не удается из-за ошибок шаблона.шаблонные выражения и визуальная студия 2005 C++

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

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

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

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

Приветствия C.

+0

Можете ли вы разместить еще немного кода? Возможно, полный фрагмент, который должен компилироваться, но не так ли? –

+1

'Lattice :: d' часть кажется совершенно ненужной, потому что массивы распадаются на указатели, а значение между' [] 'просто игнорируется. (Может быть, вы не публикуете настоящий пример.) – UncleBens

+0

Опубликовать более содержательное описание проблемы. Из того, что вы опубликовали до сих пор, нет оснований полагать, что * любой * компилятор сможет обрабатывать ваш код (на самом деле наоборот). – AnT

ответ

0

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

foo<int>(some_int_array); 

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

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

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

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

+0

Вы абсолютно правы. Они должны были написать только func (T * u), и это сработало бы ... но источник olb3d полон этих нечетных операторов шаблонов ... Думаю, я откажусь от попытки скомпилировать его в среде Windows. – chris

2

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

+0

Я пробовал VS 2010, но ошибки компилятора все еще там ... код шаблона olb3d кажется странным ... – chris

Смежные вопросы