Alias ControlBlockDeduction

This template deduce ControlType shared qualifier in SharedPtr, RcPtr and UniquePtr.

alias ControlBlockDeduction(Type, ControlType) = impl;

If Type is shared then ControlType is shared too (atomic counting).

Example

alias CB = ControlBlock!(int, int);

static assert(is(ControlBlockDeduction!(long, CB) == CB));
static assert(is(ControlBlockDeduction!(void, CB) == CB));
static assert(is(ControlBlockDeduction!(shared double, CB) == shared CB));
static assert(is(ControlBlockDeduction!(const int, CB) == CB));
static assert(is(ControlBlockDeduction!(shared const int, CB) == shared CB));

static assert(is(ControlBlockDeduction!(immutable int, CB) == CB));

static assert(is(ControlBlockDeduction!(shared int[], CB) == shared CB));
static assert(is(ControlBlockDeduction!(shared(int)[], CB) == CB));