MISRA Discussion Forums
Certified C++ Standard Library - Printable Version

+- MISRA Discussion Forums (https://forum.misra.org.uk)
+-- Forum: MISRA C++ (https://forum.misra.org.uk/forumdisplay.php?fid=18)
+--- Forum: C++ General (https://forum.misra.org.uk/forumdisplay.php?fid=128)
+--- Thread: Certified C++ Standard Library (/showthread.php?tid=1458)



Certified C++ Standard Library - dejanpan - 10-10-2018

Hi there. We are working on the automotive framework for programming of autonomous cars. Our framework has features that are very similar to those in Adaptive Autosar: https://www.autosar.org/standards/adaptive-platform/. We plan to certify this framework as a Safety Element Out of Context according to ISO 26262.

The framework is written in C++ and makes rather heavy use of constructs implemented in Standard Library (see below for the full list). Many C++ keywords like throw or lambdas use the C++ standard library. So removing the C++ standard library would lead to a dysfunctional compiler.

We are aware of 3 Standard Library implementations:
1. LLVM libc++: https://libcxx.llvm.org/docs/
2. GCC libstdc++: https://gcc.gnu.org/
3. Dinkumware: https://www.dinkumware.com/

Now the problem is that none of the above libraries are certified according to ISO 26262.

Questions:
1. **Are you aware of any ISO 26262 certified Standard Library? Or anybody that is working on it?**
2. **Would any of the above implementations qualify for a “proven in use” argument?**


Constructs in our framework used from the Standard Library:
```cpp
std::string
std::vector
std::map
std::unordered_map
std::allocator
std::allocator_traits

std::shared_ptr
std::make_shared
std::unique_ptr
std::make_unique
std::weak_ptr

std::enable_shared_from_this

std::move

std::ostream
std::ostringstream

std::lock_guard
std::mutex
std::shared_future
std::thread::hardware_concurrency
std::this_thread::yield()

std::enable_if
std::false_type
std::is_same
std::declval

std::function
std::bind

std::chrono*

std::numeric_limits

std::shared_future

std::runtime_error
std::invalid_argument

std::int32_t
std::type_index
std::snprintf
```