libcamera: base: utils: Drop defopt

utils::defopt causes compilation issues on gcc 8.0.0 to gcc 8.3.0,
likely due to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86521
that was fixed in gcc 8.4.0. gcc 8.3.0 may be considered old (libcamera
requires gcc-8 or newer), but it is shipped by Debian 10 that has LTS
support until mid-2024.

As no workaround has been found to fix compilation on gcc 8.3.0 while
still retaining the functionality of utils::defopt, remove it from the
libcamera base library. This change could be reverted once support for
gcc-8 will be dropped.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2022-10-09 07:34:09 +03:00
parent 603a4d60f6
commit e0e54965df
3 changed files with 0 additions and 88 deletions

View file

@ -170,55 +170,6 @@ protected:
return TestPass;
}
int testDefopt()
{
static bool defaultConstructed = false;
struct ValueType {
ValueType()
: value_(-1)
{
defaultConstructed = true;
}
ValueType(int value)
: value_(value)
{
}
int value_;
};
/*
* Test that utils::defopt doesn't cause default-construction
* of a ValueType instance when value_or(utils::defopt) is
* called on a std::optional that has a value.
*/
std::optional<ValueType> opt = ValueType(0);
ValueType value = opt.value_or(utils::defopt);
if (defaultConstructed || value.value_ != 0) {
std::cerr << "utils::defopt didn't prevent default construction"
<< std::endl;
return TestFail;
}
/*
* Then test that the ValueType is correctly default-constructed
* when the std::optional has no value.
*/
opt = std::nullopt;
value = opt.value_or(utils::defopt);
if (!defaultConstructed || value.value_ != -1) {
std::cerr << "utils::defopt didn't cause default construction"
<< std::endl;
return TestFail;
}
return TestPass;
}
int run()
{
/* utils::hex() test. */
@ -339,10 +290,6 @@ protected:
if (testDuration() != TestPass)
return TestFail;
/* utils::defopt test. */
if (testDefopt() != TestPass)
return TestFail;
return TestPass;
}
};