LINUX.ORG.RU

gcc-4.x и шаблоны


0

0

У меня при переходе на gcc-4.x (FC4) перестали компилироваться
конструкции вида:


#ifndef TEST_H
#define TEST_H

#include <list>
using namespace std;

template<class Type>
class Test
{
public:
list<Type>::iterator blah() // Line 11
{
list<Type> it;
return it;
}
};

#endif


Вываливается такое сообщение об ошибке:


test.h:11: error: expected ';' before 'blah'
test.h:16: error: expected `;' before '}' token


Что я делаю не так?

anonymous

Ответ на: комментарий от Selecter

Молодец, разрулил :)

забыл тока довбавить что по конвенции имена типов темплейта пишут большими буквами. i.e. TYPE | T | WHATEVER ;)

godexsoft
()
Ответ на: комментарий от godexsoft

Что за конвенция? В топку ее.

Мне больше нравится так:

- если о природе типа ничего не извесно (например в случае контейнера), то писать:

template <typename T> struct container {};

- если предпологается какая то стратегия, то:

template <typename memory_allocator> struct widget {};

aton
()
Ответ на: комментарий от godexsoft

> забыл тока довбавить что по конвенции имена типов темплейта пишут большими буквами. i.e. TYPE | T | WHATEVER ;)

По конвенции, имена пишут _с_ большой буквы: Type | T | Whatever. Просто в случае 'T', она только одна и есть =)

А так достаточно почитать доки. Там везде имена типа Allocator.

int19h ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.