I enabled language standard ISO C++ 20 Standard (needed for a new c++ source module) and received errors with some ATL items such as CComPtr and CA2W, I enabled /permissive but it still gives the errors. I'm not sure how I fix the following:
CComPtr<IMsRdpDriveCollection>pdrivecolleciton=pnonscriptable->GetDriveCollection();
error C2440: 'initializing': cannot convert from 'IMsRdpDriveCollectionPtr' to 'ATL::CComPtr<IMsRdpDriveCollection>'
message : No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
And:
CString fn=CA2W(filename, CP_UTF8);
error C2440: 'initializing': cannot convert from 'ATL::CA2W' to 'ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t>>>'
message : No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
How is this fixed?
TIA!!
The answer is to do it this way:
and
The reason was posted in comments: allowing construction through two user-defined conversions