Сделать локальный класс темплейтным
От: Аноним  
Дата: 22.10.03 09:58
Оценка:
Возможен ли сабж ?
Если да — приведите, пожалуйста, примерчик.
Спасибо.
Re: Сделать локальный класс темплейтным
От: Lorenzo_LAMAS  
Дата: 22.10.03 10:01
Оценка:
Локальных классов шаблонов быть не может.
Of course, the code must be complete enough to compile and link.
Re[2]: Сделать локальный класс темплейтным
От: Кодт Россия  
Дата: 22.10.03 10:15
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Локальных классов шаблонов быть не может.


Да ну, брось такое говорить.
// hello.cpp

namespace { // чтобы не подраться с синонимами в других местах

  template<class T, int N>
  struct arr
  {
    T data[N];
  }

}

main()
{
  arr<int, 3> x;
  x.data[0] = 1;

  return 0;
}


А если имелся в виду класс в scope другого класса — то тоже легко.
Симуляция частичной специализации только так и работает.
Перекуём баги на фичи!
Re[3]: Сделать локальный класс темплейтным
От: Lorenzo_LAMAS  
Дата: 22.10.03 10:17
Оценка:
Я так понимаю вопрос, что речь идет о классе, определенном в теле функции. О чем идет речь на самом деле, надо спросить анонима.
Of course, the code must be complete enough to compile and link.
Re[3]: Сделать локальный класс темплейтным
От: Lorenzo_LAMAS  
Дата: 22.10.03 10:25
Оценка:
Хотя вроде все ясно. Аноним спрашивает: "Возможен ли сабж". Сабж у него — Возможно ли сделать локальный класс темплейтным. Локальный класс — класс, определенный теле функции.
Of course, the code must be complete enough to compile and link.
Re[4]: Сделать локальный класс темплейтным
От: Павел Кузнецов  
Дата: 22.10.03 10:30
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

LL> Хотя вроде все ясно. Аноним спрашивает: "Возможен ли сабж". Сабж у

LL> него — Возможно ли сделать локальный класс темплейтным. Локальный
LL> класс — класс, определенный теле функции.

При более строгой трактовке, вопрос, вообще, не имеет смысла, т.к. класс шаблоном
(или шаблонным) быть не может Есть классы, есть шаблоны (классов, функций).
Хотя, одно время шаблонным классом называли специализацию шаблона класса.
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[5]: Сделать локальный класс темплейтным
От: Lorenzo_LAMAS  
Дата: 22.10.03 10:37
Оценка: :)))
ПК>При более строгой трактовке, вопрос, вообще, не имеет смысла, т.к. класс шаблоном
ПК>(или шаблонным) быть не может Есть классы, есть шаблоны (классов, функций).
ПК>Хотя, одно время шаблонным классом называли специализацию шаблона класса.

Ну только мне все равно моя трактовка вопроса как-то ближе кодтовой.
Of course, the code must be complete enough to compile and link.
Re[4]: Сделать локальный класс темплейтным
От: Аноним  
Дата: 22.10.03 12:45
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Я так понимаю вопрос, что речь идет о классе, определенном в теле функции. О чем идет речь на самом деле, надо спросить анонима.


Именно об этом.
Значит надежды нет ?

PS VC6
Re[5]: Сделать локальный класс темплейтным
От: Lorenzo_LAMAS  
Дата: 22.10.03 12:50
Оценка:
Неее, надежды нет.
Of course, the code must be complete enough to compile and link.
Re[5]: Сделать локальный класс темплейтным
От: Аноним  
Дата: 22.10.03 12:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Значит надежды нет ?


Нет. Но и неясно: зачем это может понадобиться? Без локальных шаблонов классов вполне можно обойтись...

Приведи пример, какой код тебе хотелось бы написать, придумаем, как написать код с тем же смыслом имеющимися средствами.
Re[6]: Сделать локальный класс темплейтным
От: Юнусов Булат Россия  
Дата: 22.10.03 16:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Нет. Но и неясно: зачем это может понадобиться? Без локальных шаблонов классов вполне можно обойтись...


Обычно сокрушаются что не могут сделать локальные функторы для упихивания в стд-шные алгоритмы
Re[7]: Сделать локальный класс темплейтным
От: Аноним  
Дата: 23.10.03 07:41
Оценка:
Здравствуйте, Юнусов Булат, Вы писали:

ЮБ>Здравствуйте, Аноним, Вы писали:


А>>Нет. Но и неясно: зачем это может понадобиться? Без локальных шаблонов классов вполне можно обойтись...


ЮБ>Обычно сокрушаются что не могут сделать локальные функторы для упихивания в стд-шные алгоритмы


Угадал 100%
Re[8]: Сделать локальный класс темплейтным
От: Lorenzo_LAMAS  
Дата: 23.10.03 10:27
Оценка:
Так тут-то проблема в другом — у тебя есть некоторый локальный функтор, но ты им параметризовать ничего не можешь, потому что так нельзя.
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"); }  
            );    

}
Re[10]: Сделать локальный класс темплейтным
От: Аноним  
Дата: 23.10.03 14:03
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Хотелось сделать примерно следующее :


А>#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() );\
А>\
А>}


Забудьте про это уродство и возьмите boost::lambda.
Re[11]: Сделать локальный класс темплейтным
От: Аноним  
Дата: 24.10.03 09:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Хотелось сделать примерно следующее :


А>
А>>#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() );\
А>>\
А>>}
А>


А>Забудьте про это уродство и возьмите boost::lambda.


boost::lambda не дружит с VC++ 6
Re[10]: Сделать локальный класс темплейтным
От: eaglus Россия  
Дата: 11.02.04 08:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Lorenzo_LAMAS, Вы писали:


L_L>>Так тут-то проблема в другом — у тебя есть некоторый локальный функтор, но ты им параметризовать ничего не можешь, потому что так нельзя.


А вот если так:
здесь
Автор: eaglus
Дата: 09.02.04
... << RSDN@Home 1.1.3 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.