removed keyword explicit on non single argument constructor
marked move constructor noexcept, enforced noexcept move construction on value_type by enable_if