LINUX.ORG.RU

Ответ на: Re: от anonymous

Re:

test.cpp:
#include <iostream>
using namespace std;

template<class T1, class T2> void f(T1,T2){}
template<class T1> void f<T1, int>(T1,int){}


int main(){
  return 0;
}

$ g++ test.cpp
test.cpp:5: error: partial specialization `f<T1, int>' of function template

g++ -v
Reading specs from /usr/lib/gcc-lib/i586-alt-linux/3.3.3/specs
Configured with: ../configure --prefix=/usr --libdir=/usr/lib --with-slibdir=/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --enable-long-long --enable-__cxa_atexit --enable-languages=c,c++,f77,objc,treelang,java,ada --program-suffix=-3.3 --enable-objc-gc --with-system-zlib --without-included-gettext --host=i586-alt-linux --build=i586-alt-linux --target=i586-alt-linux
Thread model: posix
gcc version 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)

AIv ★★★★★
()
Ответ на: Re: от AIv

Re:


gcc 4.0.2 еще более конкретен, в отличии от vc_8 :)

gcc:
partial_check.cpp:2: error: function template partial specialization 'f<T1, int>' is not allowed

vc:
error C2768: 'f' : illegal use of explicit template arguments





aton
()
Ответ на: Re: от AIv

bash-2.05b$ cat test2.cpp
#include <iostream>
using namespace std;

template<class T1, class T2> void f(T1,T2){}
template<class T1> void f(T1,int){}

int main()
{
  return 0;
}
bash-2.05b$ g++ test2.cpp
bash-2.05b$ ./a.out
bash-2.05b$

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

Если ты все тот же аноним, который поставил вопрос, то тебе все ращжевали, если нет то в том коже которые ты привел перезрузка, и имеет
мало чего общего с тем что привел avl, найди отличия:

avl:
template<class T1> void f<T1, int>(T1,int){}

you:
template<class T1> void f(T1,int){}


aton
()
Ответ на: Re: от AIv

bash-2.05b$ cat test2.cpp
#include <iostream>
using namespace std;

template<class T1, class T2> void f(T1 t1,T2 t2)
{
    cerr << t1 << " " << t2 << endl;
}
template<class T1> void f(T1 t1,int t2)
{
    cerr << t1 << " " << t2 << endl;
}

int main()
{
  f("zzz","zzz");
  f("zzz",1);
  return 0;
}
bash-2.05b$ g++ test2.cpp
bash-2.05b$ ./a.out
zzz zzz
zzz 1
bash-2.05b$

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

так зачем писать то что можно не писать?

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

Re:

тезка, респект, а мне пора на волю в пампасы, совсем слепой....:-(

Таки, ты мне не сказал про доступ к полям структуры... то исть я сам могу предложить варинтов пять... но все они куда более громоздки, по сравнению с union (пусть оно грязно и непрально, но оно работает). Вещь пишется для людей к-е про шеблоны и пр. почти ничего не знают, так что все что может быть скрыто и автоматизировано - должно быть скрыто и автоматизировано (то есть если заставлять пользователя писать traits - то можно на это вообще забить сразу же, задача теряет смысл). Кодогенератор чт ли какой поюзать...

И еще одно - есть базовый класс (обычный). Есть его наследник, навороченный шаблон. Как этого наследника автоматич. образом завраппить так, что бы он не был шаблоном? Проблема связана с тем, что импорт шаблонных классов не везде корректен (SWIG так вообще с этим не справляется). Шаблоны могут использоваться только как протектед-поля... В голову лезут либо грязные хаки с ручным приведением указателей, либо вирт функции (что плохо скажется на производительности остального кода), либо опять таки кодогенератор... чего бы не хотелося.

AIv ★★★★★
()
Ответ на: Re: от AIv

Re:

:) делаешь g++ -fdump*. Анализируешь полученный выхлоп и на его основе пишешь свой макрогенератор с обратной связью который будет врапить любой класс как нефиг ссать. Это _БУДЕТ_ _КРУТА_!

BottleHunter
()
Ответ на: Re: от BottleHunter

Теме закыта!!!

Частичной специализации шаблонов функий нет а есть перегрузка шаблонов функций...

anonymous
()
Ответ на: Re: от aton

Re:

2aton >Дай минимальные примеры рабочего кода

С минимальностью сложно... потому как там все довольно сильно завязано. В общем я выложил на htpp://alpha.sec.ru/~aiv/FPE Там пока не особо много, проекту и двух недель нету :-)

Архитектура несколько на голове стоит - пользователь пишет хидер fpe.hpp с неск классами с предопределенными именами, библиотечный модуль это хидер инклюдит и всячески наследует. Убого, но позволяет избаивться от лишней парметризаии и дальнейшего враппинга соотв-но.

main-а нету, собирается в объектник (которым рулиться потом из питона).

Если будет время и желание что нить сказать - наверное лучше в аську, 203458558

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