Tec*_*eko 2 c++ constructor comparator
在 C++ 中,指针类型 ( void*// ) 可以使用值 0 进行初始化,而无需int*进行char*类型转换,但这不适用于任何其他值。是否可以将相同的行为灌输到已定义的类中?构造函数=0还是==0比较器?为了澄清起见,我尝试添加语法,以便可以将我的 n 维向量类分配给零向量vec<n> dir = 0
编辑:使用 void* 作为构造函数参数的类型实际上确实有效,但这是否是实现此目的的最佳方法?
存在从字面量0到 的隐式转换nullptr,并且 的类型nullptr是nullptr_t。
因此,以下内容按照您想要的方式工作:
// Needed for nullptr_t
#include <cstddef>
struct A
{
A(std::nullptr_t) {}
};
int main()
{
A a = 0;
}
Run Code Online (Sandbox Code Playgroud)
当然,这也意味着这A a = nullptr是有效的,但也许你可以接受这一点......
您可以通过nullptr_t一些现代的constexpr模板恶作剧来完成此任务,而无需间接。