Я хотел бы создать olb3d библиотеку со своим компилятором Visual Studio 2005 года, но это перестало работать должный обработать ошибки по шаблону.
Чтобы быть точнее, следующее выражение, кажется, проблема:
void function(T u[Lattice<T>::d])
На веб-сайте проекта указан это prpably, мой компилятор не способен к таким сложным выражениям шаблона - нужно использовать gcc 3.4.1.
Мой вопрос состоит теперь в том, если существует способ обновить мой по сравнению с компилятором C++, таким образом, он может обработать выражения шаблона на уровне как gcc 3.4.1? Возможно, помогает, получаю ли я более новую версию Visual Studio?
Аплодисменты C.
Компилятор говорит, что не может вывести тип шаблона. Вы всегда можете помочь ему, указав сам тип в своем коде.
foo<int>(some_int_array);
Однако та часть между []
, которая спотыкается об это, совершенно бессмысленна. Массивы распадаются на указатели, и значение игнорируется в первую очередь. Вы можете просто прокомментировать эту часть, если это реальный пример.
Если вы возьмете массив по ссылке, VC++2005, похоже, также не имеет с ним никаких проблем:
template <class T>
void function(T (&arr)[Lattice<T>::n]);
(Возможно ли, что случай, который не компилируется, настолько бессмысленный, что никто никогда не удосужился проверить, работают ли такие вещи?)
Купите более новую версию Visual Studio. 2005 год довольно старый и не очень соответствует требованиям. Вы всегда можете сначала протестировать новый, загрузив Visual C ++ Express .