LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
LC::Util::NewType< T, Tag > Class Template Reference

A somewhat "strong" typedef. More...

#include "newtype.h"

+ Inheritance diagram for LC::Util::NewType< T, Tag >:
+ Collaboration diagram for LC::Util::NewType< T, Tag >:

Public Member Functions

 NewType ()=default
 
 NewType (const T &t)
 

Detailed Description

template<typename T, typename Tag>
class LC::Util::NewType< T, Tag >

A somewhat "strong" typedef.

NewType provides Haskell's newtype-like semantics.

Typical usage is as follows:

using FirstAlias = Util::NewType<BaseType, struct FirstTag>;
using SecondAlias = Util::NewType<BaseType, struct SecondTag>;

After this, FirstAlias and SecondAlias become more or less independent from C++'s type system point of view.

Template Parameters
TThe type for which to create the params for.

Definition at line 44 of file newtype.h.

Constructor & Destructor Documentation

◆ NewType() [1/2]

template<typename T , typename Tag >
LC::Util::NewType< T, Tag >::NewType ( )
default

◆ NewType() [2/2]

template<typename T , typename Tag >
LC::Util::NewType< T, Tag >::NewType ( const T &  t)
inline

Definition at line 57 of file newtype.h.


The documentation for this class was generated from the following file: