Recursive de-referencable nil_

This commit is contained in:
Christos Houtouridis 2019-01-29 15:51:02 +02:00
parent a7885e88a9
commit 63a7d1607d
2 changed files with 9 additions and 2 deletions

View File

@ -33,8 +33,15 @@
namespace utl { namespace utl {
namespace meta { namespace meta {
//! Empty type /*!
struct nil_ { }; * Empty type
* utl::meta's nil type is not pure nil. It's a recursive "de-referencable nil.
* Each time someone applies ::type to it, he gets back nil_. This way we can prevent
* a lot of compilation errors in a wrong meta:: handling.
*/
struct nil_ {
using type = nil_;
};
//! Type alias for \p _Tp::type. Used to extract return type of metafunctions //! Type alias for \p _Tp::type. Used to extract return type of metafunctions
template <typename _Tp> template <typename _Tp>