Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Локальных классов шаблонов быть не может.
Да ну, брось такое говорить.
// hello.cppnamespace { // чтобы не подраться с синонимами в других местахtemplate<class T, int N>
struct arr
{
T data[N];
}
}
main()
{
arr<int, 3> x;
x.data[0] = 1;
return 0;
}
А если имелся в виду класс в scope другого класса — то тоже легко.
Симуляция частичной специализации только так и работает.
Хотя вроде все ясно. Аноним спрашивает: "Возможен ли сабж". Сабж у него — Возможно ли сделать локальный класс темплейтным. Локальный класс — класс, определенный теле функции.
Of course, the code must be complete enough to compile and link.
Здравствуйте, Lorenzo_LAMAS, Вы писали:
LL> Хотя вроде все ясно. Аноним спрашивает: "Возможен ли сабж". Сабж у LL> него — Возможно ли сделать локальный класс темплейтным. Локальный LL> класс — класс, определенный теле функции.
При более строгой трактовке, вопрос, вообще, не имеет смысла, т.к. класс шаблоном
(или шаблонным) быть не может Есть классы, есть шаблоны (классов, функций).
Хотя, одно время шаблонным классом называли специализацию шаблона класса.
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
ПК>При более строгой трактовке, вопрос, вообще, не имеет смысла, т.к. класс шаблоном ПК>(или шаблонным) быть не может Есть классы, есть шаблоны (классов, функций). ПК>Хотя, одно время шаблонным классом называли специализацию шаблона класса.
Ну только мне все равно моя трактовка вопроса как-то ближе кодтовой.
Of course, the code must be complete enough to compile and link.
Re[4]: Сделать локальный класс темплейтным
От:
Аноним
Дата:
22.10.03 12:45
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Я так понимаю вопрос, что речь идет о классе, определенном в теле функции. О чем идет речь на самом деле, надо спросить анонима.
Здравствуйте, Аноним, Вы писали:
А>Нет. Но и неясно: зачем это может понадобиться? Без локальных шаблонов классов вполне можно обойтись...
Обычно сокрушаются что не могут сделать локальные функторы для упихивания в стд-шные алгоритмы
Re[7]: Сделать локальный класс темплейтным
От:
Аноним
Дата:
23.10.03 07:41
Оценка:
Здравствуйте, Юнусов Булат, Вы писали:
ЮБ>Здравствуйте, Аноним, Вы писали:
А>>Нет. Но и неясно: зачем это может понадобиться? Без локальных шаблонов классов вполне можно обойтись...
ЮБ>Обычно сокрушаются что не могут сделать локальные функторы для упихивания в стд-шные алгоритмы
Так тут-то проблема в другом — у тебя есть некоторый локальный функтор, но ты им параметризовать ничего не можешь, потому что так нельзя.
Of course, the code must be complete enough to compile and link.
Re[9]: Сделать локальный класс темплейтным
От:
Аноним
Дата:
23.10.03 12:07
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Так тут-то проблема в другом — у тебя есть некоторый локальный функтор, но ты им параметризовать ничего не можешь, потому что так нельзя.
Хотелось сделать примерно следующее :
#include <list>
#include <algorithm>
using namespace std;
#define In ,
#define FOR_EACH( ELEM, CONTAINER, ACTION ) \
\
{\
\
class Dummy\
{\
template<class _II>\
inline void operator()(_II _F, _II _L)\
{\
for (; _F != _L; ++_F)\
{\
_II ELEM = *_F;\
ACTION;\
}\
}\
};\
\
Dummy theDummy;\
theDummy( CONTAINER.begin(), CONTAINER.end() );\
\
}
int main(int argc, char* argv[])
{
list<string> lstExample;
lstExample.push_back("aaa");
lstExample.push_back("bbb");
lstExample.push_back("ccc");
// чтобы можно было писать например так
FOR_EACH( sElem In lstExample, cout << sElem << endl );
// или так
FOR_EACH( sElem In lstExample,
if( !sElem.empty() ) { cout << sElem << endl; }
else { ::AfxMessageBox("Empty string"); }
);
}
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>>Так тут-то проблема в другом — у тебя есть некоторый локальный функтор, но ты им параметризовать ничего не можешь, потому что так нельзя.