Visual Studio has a compiler flag for handling warnings as errors (/ WX). You can disable this flag so that warnings are not treated as errors. You can also ignore specific warnings (/ wd4100 to disable the C4100 warning).
What you see is a compiler warning, which is seen as an error.
This is not related to the interpretation of the quotation from the standard.
When
BB< AA > instance;
the compiler does not give a warning message, because you can do something in a constructor that has side effects. The compiler prefers not to delve into the details of how the constructor is implemented to determine whether the calling constructor has side effects or not.
When
CC< AA > instance2;
he can deduce that there are no side effects of building the object.
source share