我在gcc(版本6.3.1)中遇到了vector :: emplace_back()的奇怪行为(在我眼中)。即使将转换运算符声明为显式,它也会隐式地将类型转换为另一种类型。明确运算符的隐式转换
class A
{
public:
explicit A(double value) :
value{value}
{}
explicit operator double() const
{
return value;
}
private:
double value;
};
int main()
{
A a{0.0};
std::vector<double> values;
values.emplace_back(a); // <- no error here!
return 0;
}
它是一个错误或功能?
'emplace_back'从给定参数显式构建。 – Jarod42
虽然你会得到'push_back'的错误。 – Jarod42