diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-01-22 15:31:22 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-01-22 20:44:04 +0200 |
commit | a22dcaaa786de67786eeaeb47598ed76339249ad (patch) | |
tree | 81a9cf50def556cc97f64861cdc0bba8b55e3ba7 | |
parent | 29c3b54f0c8ec7e3aeed8971d24f939bc4bfab04 (diff) |
cam: options: Don't implement move semantics for OptionsParser::Options
The compiler creates a move constructor automatically when none is
supplied, and it does the right thing by default in this case. Using
std::move() inside the function prevents the compiler from doing
return value optimization and actually hinders performances. Using
std::move() in the caller is unnecessary, the move constructor is used
automatically by the compiler.
For all these reasons remove the tentative optimization that resulted in
worse performances and worse code.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
-rw-r--r-- | src/cam/main.cpp | 2 | ||||
-rw-r--r-- | src/cam/options.cpp | 13 | ||||
-rw-r--r-- | src/cam/options.h | 2 |
3 files changed, 2 insertions, 15 deletions
diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 22211670..0d37039f 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -33,7 +33,7 @@ static int parseOptions(int argc, char *argv[]) parser.addOption(OptHelp, "Display this help message", "help"); parser.addOption(OptList, "List all cameras", "list"); - options = std::move(parser.parse(argc, argv)); + options = parser.parse(argc, argv); if (!options.valid()) return -EINVAL; diff --git a/src/cam/options.cpp b/src/cam/options.cpp index d391a0e5..82acff9b 100644 --- a/src/cam/options.cpp +++ b/src/cam/options.cpp @@ -102,7 +102,7 @@ OptionsParser::Options OptionsParser::parse(int argc, char **argv) options.values_[c] = optarg ? optarg : ""; } - return std::move(options); + return options; } void OptionsParser::usage() @@ -160,17 +160,6 @@ OptionsParser::Options::Options() { } -OptionsParser::Options::Options(Options &&other) - : values_(std::move(other.values_)) -{ -} - -OptionsParser::Options &OptionsParser::Options::operator=(Options &&other) -{ - values_ = other.values_; - return *this; -} - bool OptionsParser::Options::valid() const { return !values_.empty(); diff --git a/src/cam/options.h b/src/cam/options.h index 88336dfe..f99ea730 100644 --- a/src/cam/options.h +++ b/src/cam/options.h @@ -23,8 +23,6 @@ public: class Options { public: Options(); - Options(Options &&other); - Options &operator=(Options &&other); bool valid() const; bool isSet(int opt) const; |