SI単位系のシステムを実装しています。単位が漏れたり漏れたりしないようにするために、値を単位に暗黙的に変換したり、その逆をしたりしたくありません。ただし、0 を暗黙的に null ポインターに変換するが、他の値は変換しないポインターでできるように、0 を私の単位系に変換できると非常に便利です。
だから私の質問は: この種の 0 から null ポインターへの暗黙的な変換を複製できますか? それとも、同じことを達成するためにそれを有利に使用できますか?
たとえば、そのようなコンストラクターについてどう思いますか?
constexpr unit_t(void*) : _value(0) { }
注: 単位自体は、値ではなく型にあります。
編集: なぜ 0 からユニットにキャストするのですか?
私がこれを望む理由は、単位を知らないアルゴリズムを書くためです。たとえば、長さの行列があり、それを逆にしたい場合は、最初にその行列式を計算し、それが 0 でない場合は逆行列を返します (そうでない場合、これはエラーです)。
したがって、0 リテラルを一般的な単位として扱うと便利です。そして、これはまさにポインターの場合に起こることです。次のように入力できます。
void* c = 0;
だがしかし:
void f(int a) { void *c = a; }