explicit specifier
From Cppreference
Specifies constructors and (since C++11) conversion operators that don't allow implicit conversions
[edit] Syntax
explicit class_name ( params ) | |||||||||
explicit operator type ( ) (since C++11) | |||||||||
[edit] Example
struct A { A ( int ) {} operator int() const { return 0; } }; struct B { explicit B(int) {} explicit operator int() const { return 0; } }; int main() { // A is has no explicit ctor / conversion, everything is fine A a1 = 1; A a2 ( 2 ); int na1 = a1; int na2 = int ( a1 ); B b1 = 1; // Wrong: implicit conversion from int to B B b2 ( 2 ); // OK: explicit constructor call int nb1 = b1; // Wrong: implicit conversion from B to int int nb2 = int ( b1 ); // OK: explicit cast }