Prima di tutto, si noti che sto usando C++ 03 (e C++ 11 non è un'opzione). Sto usando il concetto spinta per controllare che una certa classe è default-costruibile:Posso verificare che una classe sia * non * predefinita costruibile?
BOOST_CONCEPT_ASSERT((boost::DefaultConstructible<my_class>));
Tuttavia, per qualche altra classe vorrei affermare che il tipo ha non avere un costruttore di default. C'è un modo per farlo?
Aggiornamento: a tutti quegli esperti super-super marcatura la questione come duplicato o già risposto senza leggerlo: Premetto già nel primo paragrafo che utilizzo già concetto spinta per controllare che le classi sono default-costruibile (che è la domanda che questo dovrebbe essere un duplicato di). Dichiaro inoltre esplicitamente che non posso usare C++ 11, quindi type_traits
non sono disponibili per me. Quindi, qualcuno potrebbe indicarmi la parte specifica in cui la domanda my è stata "già risposta"? Perché non l'ho ancora trovato.
se si ha accesso a da TR1 o dall'estensione del compilatore, ha la soluzione semplice. Anche il compilatore può avere una funzione intrinseca correlata. (cioè VS2010 fa) –
e ti ho perso da qualche parte, non sta aggiungendo! nell'espressione citata cosa stai cercando? –
@BalogPal: per quanto posso dire dal codice, queste asserzioni non funzionano restituendo un valore di verità per qualsiasi parte dell'espressione tra parentesi. Invece c'è un sacco di magia macro coinvolta, ma si riduce al codice per alcune funzioni che non verranno compilate a meno che il concetto in questione non sia valido. Trasformare il codice che non si compila nella compilazione di uno e viceversa è difficile almeno. – MvG