meson.build: Switch to C++14
C++14 is a minor release that doesn't introduce major new concepts or paradigms compared to C++11, but brings two useful changes for us: - std::make_unique allows dropping our custom implementation in utils. - Functions returning constexpr are not assumed to be const anymore, which is needed to create a standard-conformant span implementation. All the g++ and clang++ versions we support and test (g++-5 onwards and clang++6 onwards) support C++14. However, due to a defect in the original C++14 specification, solved in N4387 ([1]), compilation would fail on g++-5 due to the use of std::map::emplace() with a non-copyable value type. It turns out we can easily fix it by switching to the explicit piecewise emplace() overload. There is thus really nothing holding back the switch. Let's do it, and update the coding style accordingly. [1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387 Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
055335bf49
commit
9a61a13466
3 changed files with 12 additions and 15 deletions
|
@ -86,22 +86,17 @@ headers, and with double quotes for other libcamera headers.
|
||||||
C++ Specific Rules
|
C++ Specific Rules
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
The code shall be implemented in C++03, extended with the following
|
The code shall be implemented in C++14, with the following caveats:
|
||||||
C++-11-specific features:
|
|
||||||
|
|
||||||
* Initializer lists
|
* Type inference (auto and decltype) shall be used with caution, to avoid
|
||||||
* Type inference (auto and decltype)
|
drifting towards an untyped language.
|
||||||
Type inference shall be used with caution, to avoid drifting towards an
|
* The explicit, override and final specifiers are to be used where applicable.
|
||||||
untyped language.
|
* General-purpose smart pointers (std::unique_ptr) deprecate std::auto_ptr.
|
||||||
* Range-based for loop
|
|
||||||
* Lambda functions
|
|
||||||
* Explicit overrides and final
|
|
||||||
* Null pointer constant
|
|
||||||
* General-purpose smart pointers (std::unique_ptr), deprecating std::auto_ptr.
|
|
||||||
Smart pointers, as well as shared pointers and weak pointers, shall not be
|
Smart pointers, as well as shared pointers and weak pointers, shall not be
|
||||||
overused.
|
overused.
|
||||||
* Variadic class and function templates
|
* Classes are encouraged to define move constructors and assignment operators
|
||||||
* rvalue references, move constructor and move assignment
|
where applicable, and generally make use of the features offered by rvalue
|
||||||
|
references.
|
||||||
|
|
||||||
Object Ownership
|
Object Ownership
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
|
@ -4,7 +4,7 @@ project('libcamera', 'c', 'cpp',
|
||||||
default_options : [
|
default_options : [
|
||||||
'werror=true',
|
'werror=true',
|
||||||
'warning_level=2',
|
'warning_level=2',
|
||||||
'cpp_std=c++11',
|
'cpp_std=c++14',
|
||||||
],
|
],
|
||||||
license : 'LGPL 2.1+')
|
license : 'LGPL 2.1+')
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,9 @@ void IPARkISP1::configure(const std::map<unsigned int, IPAStream> &streamConfig,
|
||||||
void IPARkISP1::mapBuffers(const std::vector<IPABuffer> &buffers)
|
void IPARkISP1::mapBuffers(const std::vector<IPABuffer> &buffers)
|
||||||
{
|
{
|
||||||
for (const IPABuffer &buffer : buffers) {
|
for (const IPABuffer &buffer : buffers) {
|
||||||
auto elem = buffers_.emplace(buffer.id, buffer.planes);
|
auto elem = buffers_.emplace(std::piecewise_construct,
|
||||||
|
std::forward_as_tuple(buffer.id),
|
||||||
|
std::forward_as_tuple(buffer.planes));
|
||||||
const FrameBuffer &fb = elem.first->second;
|
const FrameBuffer &fb = elem.first->second;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue