我在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