我正在尝试编写一个与整数密切相关的类,因此我包含了一个形式为
conversion constructor
的转换构造函数。
constexpr example::example(const int &n);
我的问题是:如果我随后定义了这个函数。
void foo(example n);
我这样使用它
foo(3);
在我的代码中,整数字面量3
是否会在编译时转换为example
的实例?
如果不是,是否有一种方法可以获得这种行为?
如果是,即使构造函数没有显式声明为constexpr
,仍然会发生吗?
consteval
。 - NathanOliver3
才必须在编译时转换为example
的实例。否则,它不会被转换。 - R Sahuexample
是一个构造缓慢的复杂对象,并且foo(3);
在另一个函数内,例如void bar(){foo(3); return;}
,那么怎么办?每次调用bar
时都会将3
转换一次吗? - ThePirate42