Esiste, o come scriveresti, una classe metafunzione che verifica se una classe è compatibile con boost::range
? Voglio usare il boost::enable
linguaggio, qualcosa di simile aMetafunzione per verificare se l'oggetto è compatibile con il range di boost
template <typename T>
Constructor::Constructor(const T& t, __attribute__((unused)) typename boost::enable_if<is_range_compatible<T> >::type* aux=NULL)
per un adeguato is_range_compatible
metafunction. So di is_container da pretty_print, che cattura molti casi, ma non tutto ciò che funziona con boost::range
.
Modifica Questo utilizza C++ 03, quindi non ho accesso alle funzionalità di C++ 11. Sto usando un vecchio, gcc 4.1 e boost 1.51.
Boost ha già una soluzione: [. Concepts controllo] (http://www.boost.org/doc/ libs/1_54_0/libs/range/doc/html/range/concepts/concept_checking.html) – jrok
Sembra essere simile a [questa domanda] (http://stackoverflow.com/questions/14439479/detecting-whether-something-is -Boost-gamma-con-sfinae). – llonesmiz
Hai accesso a C++ 11 o no? Perché la meta-programmazione è leggermente più semplice con 'decltype' e ritorni specificati in ritardo. –