#include <iostream>
enum class LogLevel
{
Debug,
Info,
Warn [[deprecated("Use Warning instead")]],
Warning,
Error
};
const char* toString(LogLevel level)
{
switch (level)
{
case LogLevel::Debug: return "Debug";
case LogLevel::Info: return "Info";
case LogLevel::Warn: return "Warn (deprecated)";
case LogLevel::Warning: return "Warning";
case LogLevel::Error: return "Error";
}
return "Unknown";
}
int main()
{
LogLevel current = LogLevel::Warn; // Compiler warning here
std::cout << "Current level: "
<< toString(current)
<< '\n';
LogLevel recommended = LogLevel::Warning;
std::cout << "Recommended level: "
<< toString(recommended)
<< '\n';
}
/*
run:
main.cpp: In function ‘const char* toString(LogLevel)’:
main.cpp:18:24: warning: ‘LogLevel::Warn’ is deprecated: Use Warning instead [-Wdeprecated-declarations]
18 | case LogLevel::Warn: return "Warn (deprecated)";
| ^~~~
main.cpp:7:5: note: declared here
7 | Warn [[deprecated("Use Warning instead")]],
| ^~~~
main.cpp:18:24: warning: ‘LogLevel::Warn’ is deprecated: Use Warning instead [-Wdeprecated-declarations]
18 | case LogLevel::Warn: return "Warn (deprecated)";
| ^~~~
main.cpp:7:5: note: declared here
7 | Warn [[deprecated("Use Warning instead")]],
| ^~~~
main.cpp: In function ‘int main()’:
main.cpp:28:34: warning: ‘LogLevel::Warn’ is deprecated: Use Warning instead [-Wdeprecated-declarations]
28 | LogLevel current = LogLevel::Warn; // Compiler warning here
| ^~~~
main.cpp:7:5: note: declared here
7 | Warn [[deprecated("Use Warning instead")]],
| ^~~~
main.cpp:28:34: warning: ‘LogLevel::Warn’ is deprecated: Use Warning instead [-Wdeprecated-declarations]
28 | LogLevel current = LogLevel::Warn; // Compiler warning here
| ^~~~
main.cpp:7:5: note: declared here
7 | Warn [[deprecated("Use Warning instead")]],
| ^~~~
Current level: Warn (deprecated)
Recommended level: Warning
*/