Estou a desenvolver em C++ CLI e decidi usar o DateDiff para me facilitar a vida, então adicionei a referência ao namespace Microsoft.VisualBasic e pus mãos à obra.
VB
Dim data1 As System.Int64 = DateDiff(DateInterval.Day, Data1, Data2)
C++
System::Int64 Resultado = Microsoft::VisualBasic::DateAndTime::DateDiff(Microsoft::VisualBasic::DateInterval::Day, Data1, Data2,Microsoft::VisualBasic::FirstDayOfWeek::Sunday,Microsoft::VisualBasic::FirstWeekOfYear::Jan1);
Em C++ não se pode omitir os dois últimos parâmetros como acontece em VB.
Dica:
Tive um contratempo e o resultado em VB e C++ eram diferentes em 1 dia para as mesmas datas. O problema era ao passar o DateTimePicker.Value para um DateTime, em VB tem um comportamento ligeiramente diferente do que em C++. Em VB colocava-me apenas o Ano | Mês | Dia e com as horas a 0 e em C++ colocava a hora corrente. Era isto que fazia com que me desse um resultado diferente em C++ e em VB.
Solução – Passar explicitamente as horas a 0 no construtor do DateTime:
DataFim = DateTime(DtpDateFin->Value.Year, DtpDateFin->Value.Month, DtpDateFin->Value.Day,0,0,0);