In the new standard C++ will be more type safe but still it will not be completely type safe like other languages like Java. But a strong type checking mechanism will be added as a core language feature. One example is you can add new type features. See the following sample taken from Wikipedia. The conversion will happen only if we give specific type casts.

class A{} ;
class B{} ;
class C
{
public:
  operator A() ;// Implicit use permitted.
  explicit operator B() ;// Only explicit use.
} ;

A a ;
B b ;
C c ;
a = c;// OK.
b = c;// ERROR: an implicitly usable
// conversion operator doesn’t exist.
b = static_cast<B>(c) ;// OK, C++ style cast.
b = (B)c ;// OK, C style cast.

The compiler will silently generate the default constructor, destructor, assignment (operator=) and copy constructor, if we don’t specifically write one, which is not generated as intended by programmer. Now that too can be controlled using explicit declaration of class so that compiler will not generate its own version of the special member functions said above. But we have to take care of them ourselves.

class MyClass explicit
{
  public: MyClass( int ) ;
} ;