libcamera: base: log: Remove move constructor

C++17 guarantees move and copy elision in certain cases,
such as when returning a prvalue of the same type as the
return type of the function.

This is what the `_log()` functions do, thus there is no need
for the move constructor, so remove it. Furthermore, do not
just remove the implementation, but instead delete it as well.

Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Barnabás Pőcze 2025-01-21 13:12:54 +01:00
parent f72c76eb6e
commit d40250e03b
2 changed files with 1 additions and 22 deletions

View file

@ -61,8 +61,6 @@ public:
LogMessage(const char *fileName, unsigned int line,
const LogCategory &category, LogSeverity severity,
const std::string &prefix = std::string());
LogMessage(LogMessage &&);
~LogMessage();
std::ostream &stream() { return msgStream_; }
@ -75,7 +73,7 @@ public:
const std::string msg() const { return msgStream_.str(); }
private:
LIBCAMERA_DISABLE_COPY(LogMessage)
LIBCAMERA_DISABLE_COPY_AND_MOVE(LogMessage)
void init(const char *fileName, unsigned int line);

View file

@ -866,25 +866,6 @@ LogMessage::LogMessage(const char *fileName, unsigned int line,
init(fileName, line);
}
/**
* \brief Move-construct a log message
* \param[in] other The other message
*
* The move constructor is meant to support the _log() functions. Thanks to copy
* elision it will likely never be called, but C++11 only permits copy elision,
* it doesn't enforce it unlike C++17. To avoid potential link errors depending
* on the compiler type and version, and optimization level, the move
* constructor is defined even if it will likely never be called, and ensures
* that the destructor of the \a other message will not output anything to the
* log by setting the severity to LogInvalid.
*/
LogMessage::LogMessage(LogMessage &&other)
: msgStream_(std::move(other.msgStream_)), category_(other.category_),
severity_(other.severity_)
{
other.severity_ = LogInvalid;
}
void LogMessage::init(const char *fileName, unsigned int line)
{
/* Log the timestamp, severity and file information. */