#include <iostream>
#include <string>
struct SomeClass {};
struct Container
{
Container() = default;
explicit Container(int) {}
explicit Container(double) {}
explicit Container(const std::string&) {}
explicit Container(const SomeClass&) {}
explicit operator int () const {return {}; }
explicit operator double () const {return {}; }
explicit operator std::string () const {return {}; }
explicit operator SomeClass () const {return {}; }
};
const Container cont1(int{});
const Container cont2(double{});
const Container cont3(std::string{});
const Container cont4(SomeClass{});
const double v1(cont1);
const int v2(cont2);
const std::string v3(cont3);
const SomeClass v4(cont4);
int main() {
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RydWN0IFNvbWVDbGFzcyB7fTsKCnN0cnVjdCBDb250YWluZXIKewoJQ29udGFpbmVyKCkgPSBkZWZhdWx0OwoJZXhwbGljaXQgQ29udGFpbmVyKGludCkge30KCWV4cGxpY2l0IENvbnRhaW5lcihkb3VibGUpIHt9CglleHBsaWNpdCBDb250YWluZXIoY29uc3Qgc3RkOjpzdHJpbmcmKSB7fQoJZXhwbGljaXQgQ29udGFpbmVyKGNvbnN0IFNvbWVDbGFzcyYpIHt9CgoJZXhwbGljaXQgb3BlcmF0b3IgaW50ICgpIGNvbnN0IHtyZXR1cm4ge307IH0KCWV4cGxpY2l0IG9wZXJhdG9yIGRvdWJsZSAoKSBjb25zdCB7cmV0dXJuIHt9OyB9CglleHBsaWNpdCBvcGVyYXRvciBzdGQ6OnN0cmluZyAoKSBjb25zdCB7cmV0dXJuIHt9OyB9CglleHBsaWNpdCBvcGVyYXRvciBTb21lQ2xhc3MgKCkgY29uc3Qge3JldHVybiB7fTsgfQp9OwoKY29uc3QgQ29udGFpbmVyIGNvbnQxKGludHt9KTsKY29uc3QgQ29udGFpbmVyIGNvbnQyKGRvdWJsZXt9KTsKY29uc3QgQ29udGFpbmVyIGNvbnQzKHN0ZDo6c3RyaW5ne30pOwpjb25zdCBDb250YWluZXIgY29udDQoU29tZUNsYXNze30pOwoKY29uc3QgZG91YmxlIHYxKGNvbnQxKTsKY29uc3QgaW50IHYyKGNvbnQyKTsKY29uc3Qgc3RkOjpzdHJpbmcgdjMoY29udDMpOwpjb25zdCBTb21lQ2xhc3MgdjQoY29udDQpOwoKaW50IG1haW4oKSB7Cn0=