Conversion by explicit constructor or explicit conversion function
suggest changeA conversion that involves calling an explicit constructor or conversion function can’t be done implicitly. We can request that the conversion be done explicitly using static_cast
. The meaning is the same as that of a direct initialization, except that the result is a temporary.
class C {
std::unique_ptr<int> p;
public:
explicit C(int* p) : p(p) {}
};
void f(C c);
void g(int* p) {
f(p); // error: C::C(int*) is explicit
f(static_cast<C>(p)); // ok
f(C(p)); // equivalent to previous line
C c(p); f(c); // error: C is not copyable
}
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents