Using Visual C++ 2015 stand alone toolchain and cryptest.nmake:
cl.exe /nologo /W4 /D_MBCS /Zi /TP /EHsc /MD /FI sdkddkver.h /FI winapif
amily.h /c wait.cpp
wait.cpp
c:\users\jeff\desktop\cryptopp\wait.h(152): warning C4589: Constructor of abstra
ct class 'CryptoPP::WaitObjectsTracer' ignores initializer for virtual base clas
s 'CryptoPP::Tracer'
c:\users\jeff\desktop\cryptopp\wait.h(152): note: virtual base classes are only
initialized by the most-derived type
...
cl.exe /nologo /W4 /D_MBCS /Zi /TP /EHsc /MD /FI sdkddkver.h /FI winapif
amily.h /c network.cpp
network.cpp
c:\users\jeff\desktop\cryptopp\wait.h(152): warning C4589: Constructor of abstra
ct class 'CryptoPP::WaitObjectsTracer' ignores initializer for virtual base clas
s 'CryptoPP::Tracer'
c:\users\jeff\desktop\cryptopp\wait.h(152): note: virtual base classes are only
initialized by the most-derived type
...
cl.exe /nologo /W4 /D_MBCS /Zi /TP /EHsc /MD /FI sdkddkver.h /FI winapif
amily.h /c socketft.cpp
socketft.cpp
c:\users\jeff\desktop\cryptopp\wait.h(152): warning C4589: Constructor of abstra
ct class 'CryptoPP::WaitObjectsTracer' ignores initializer for virtual base clas
s 'CryptoPP::Tracer'
c:\users\jeff\desktop\cryptopp\wait.h(152): note: virtual base classes are only
initialized by the most-derived type
...
cl.exe /nologo /W4 /D_MBCS /Zi /TP /EHsc /MD /FI sdkddkver.h /FI winapif
amily.h /c winpipes.cpp
winpipes.cpp
c:\users\jeff\desktop\cryptopp\wait.h(152): warning C4589: Constructor of abstra
ct class 'CryptoPP::WaitObjectsTracer' ignores initializer for virtual base clas
s 'CryptoPP::Tracer'
c:\users\jeff\desktop\cryptopp\wait.h(152): note: virtual base classes are only
initialized by the most-derived type
...
cl.exe /nologo /W4 /D_MBCS /Zi /TP /EHsc /MD /FI sdkddkver.h /FI winapif
amily.h /c test.cpp
test.cpp
c:\users\jeff\desktop\cryptopp\wait.h(152): warning C4589: Constructor of abstra
ct class 'CryptoPP::WaitObjectsTracer' ignores initializer for virtual base clas
s 'CryptoPP::Tracer'
c:\users\jeff\desktop\cryptopp\wait.h(152): note: virtual base classes are only
initialized by the most-derived type
According to False warning C4589: Constructor of abstract class 'Class2' ignores initializer for virtual base class 'Class1':
Thank you for reporting this issue; it will be fixed in the Update 1 release of VS2015.
It's far from ideal, but besides disabling the warning or defining Derived's copy and/or move constructors as deleted, the workaround is to explicitly define copy and/or move constructors for Derived that don't initialize Base.
It also appears the issue was not fixed in Update 1.
Cleared at Commit be80fcdbba204b58.
I do not see this fixed in VS 2015 Update 2
The same warning is still produced in VS2017RC. At https://connect.microsoft.com/VisualStudio/feedback/details/1570496/ the issue has been closed as fixed a long time ago. Someone who clearly understands the nature of this issue should report it to Microsoft again on https://connect.microsoft.com/VisualStudio/feedback.
@vidanovic, @PowerGamer1,
This came up again on the mailing list. It appears the issue is still present in VS2017. Also see cryptopp-565 unclean build with VS2015 cryptopp/wait.h.
Does anyone know how to clear the issue once and for all?
Most helpful comment
I do not see this fixed in VS 2015 Update 2