Newsgroup: it.comp.lang.c++
Titolo: STL senza Eccezioni

E' possibile utilizzare l'STL senza le eccezioni?
Per es. gradirei poter scrivere
if (!l.push_back(p)) Ops();
Kiuhnm

 if (!l.push_back(p)) Ops();
no
-- 
sbi

 no
Lo sospettavo.
Kiuhnm


No. Penso che il meglio che tu possa fare sia scrivere contenitori tuoi
con gestione della memoria ad hoc che aderiscano all'interfaccia
dell'STL per le operazioni che non allocano memoria.
Ciao,
Nicola

 dell'STL per le operazioni che non allocano memoria.
Per il momento ho creato delle classi derivate. In futuro le sostituirò 
totalmente con delle mie implementazioni.
Kiuhnm


Per chi sa cosa sta facendo non ci trovo molto di male. In genere
quando ho bisogno di una classe che si comporti "quasi" come un
contenitore standard includo un membro dato di quel tipo e aggiungo le
deleghe solo se sono indispensabili per compilare.
Ciao,
Nicola

 deleghe solo se sono indispensabili per compilare.
a patto che kiuhnm non stia parlando di public inheritance direi che son 
due soluzioni equivalenti...
se sta usando inheritance pubblica, spero stia nascondendo quelle classi 
nei meandri del nonriutilizzo, o perlomeno spero che gli esploda il pc a 
breve.
-- 
sbi

 breve.
Sì, è proprio pubblica:
===
#ifndef _INCLUDE_LIST_
#define _INCLUDE_LIST_
#include <list>
template <class T>
class list : public std::list<T>
{
	typedef std::list<T> SList;
public:
	bool push_back(const T& t)
	{
		SList::push_back(t);
		return true;
	}
};
#endif
===
Kiuhnm

 	}
Perché non hai scritto?
bool push_back(const T& t)
{
	try
	{
		SList::push_back(t);
	}
	catch(...)
	{
		return false;
	}
	return true;
}

 Perché non hai scritto?
[...]
Perché tanto sarà codice che andrà eliminato. E' inutile perderci tempo.
Kiuhnm

 Perché tanto sarà codice che andrà eliminato. E' inutile perderci tempo.
Perché tanto *è* codice che verrà eliminato.
Kiuhnm

 Perché tanto *è* codice che verrà eliminato.
Posso chiederti perchè non vuoi le eccezioni? Per ragioni di
interfaccia?
Immagino che se sono ragioni di efficienza, allora dovrai eliminare al
più presto il codice :)
-- 
blog:  
http://www.akropolix.net/rik0/blogs
 | Uccidete i filosofi,
site:  
http://www.akropolix.net/rik0/
      | tenetevi riso e
forum: 
http://www.akropolix.net/forum/
     | bacchette per voi.

 interfaccia?
Sto creando un OS.
Kiuhnm

 Sto creando un OS.
Si questo lo sapevo. Quindi in pratica ti devi sbrigare davvero a cavare
le eccezioni, anche averle sotto il cofano potrebbe essere un problema
(immagino che il C++ a basso livello non avrà neppure il supporto per le
stesse).


 stesse).
Non è un vero problema. I compilatori hanno molte opzioni per 
influenzare la generazione del codice. Potrei anche decidere di passare 
per il listato asm (analizzabile e manipolabile liberamente).
Kiuhnm

 Kiuhnm

 personale e non divulgato ?
Sarà commerciale. Lo scopo del progetto non è creare un OS. L'OS serve 
solo come base di partenza. Cioè che interesserà l'utente sarà ciò che 
girerà su questo particolare OS.
Kiuhnm

 Kiuhnm

 risorse ?
Per ora č tutto top secret ;)
Kiuhnm


Visto così mi sembra più un OS per un dispositivo hardware speciale, sbaglio?
Ciao
  Andrea

 Visto cosě mi sembra piů un OS per un dispositivo hardware speciale, sbaglio?
Sbagli, ma, veramente, non posso dirvi niente di piů.
Kiuhnm


Vabbé. Almeno quando esce facci vedere di cosa si tratta ;-)
Ciao
  Andrea

 Sbagli, ma, veramente, non posso dirvi niente di piů.
Maledetti nda :)
Ci fai friggere tutti :P


 Maledetti nda :)
:)
Kiuhnm

 Perché tanto *è* codice che verrà eliminato.
Se sei italiano, o se lavori per ditte italiane, dovresti sapere che non
c'è niente di più definitivo delle cose temporanee, o del codice scritto in
fretta "tanto poi si aggiusta".