diff --git a/Documentation/coding-style.rst b/Documentation/coding-style.rst index 9939c7b1e..bbc1f2fb1 100644 --- a/Documentation/coding-style.rst +++ b/Documentation/coding-style.rst @@ -86,22 +86,17 @@ headers, and with double quotes for other libcamera headers. C++ Specific Rules ------------------ -The code shall be implemented in C++03, extended with the following -C++-11-specific features: +The code shall be implemented in C++14, with the following caveats: -* Initializer lists -* Type inference (auto and decltype) - Type inference shall be used with caution, to avoid drifting towards an - untyped language. -* Range-based for loop -* Lambda functions -* Explicit overrides and final -* Null pointer constant -* General-purpose smart pointers (std::unique_ptr), deprecating std::auto_ptr. +* Type inference (auto and decltype) shall be used with caution, to avoid + drifting towards an untyped language. +* The explicit, override and final specifiers are to be used where applicable. +* General-purpose smart pointers (std::unique_ptr) deprecate std::auto_ptr. Smart pointers, as well as shared pointers and weak pointers, shall not be overused. -* Variadic class and function templates -* rvalue references, move constructor and move assignment +* Classes are encouraged to define move constructors and assignment operators + where applicable, and generally make use of the features offered by rvalue + references. Object Ownership ~~~~~~~~~~~~~~~~ diff --git a/meson.build b/meson.build index 634488589..37cf4d665 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,7 @@ project('libcamera', 'c', 'cpp', default_options : [ 'werror=true', 'warning_level=2', - 'cpp_std=c++11', + 'cpp_std=c++14', ], license : 'LGPL 2.1+') diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp index 74b292200..a8dd1645d 100644 --- a/src/ipa/rkisp1/rkisp1.cpp +++ b/src/ipa/rkisp1/rkisp1.cpp @@ -104,7 +104,9 @@ void IPARkISP1::configure(const std::map &streamConfig, void IPARkISP1::mapBuffers(const std::vector &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; /*