
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
== Why is this an issue?
|
|
|
|
It is implementation-defined behaviour whether the reference parameter is a temporary object or a reference to the parameter. If the implementation uses a local copy (temporary object), this will be destroyed when the function returns. Any attempt to use such an object after its destruction will lead to undefined behaviour.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,cpp]
|
|
----
|
|
int32_t * fn1 ( int32_t & x )
|
|
{
|
|
return &x ; // Noncompliant
|
|
}
|
|
const int32_t * fn3 ( const int32_t & x )
|
|
{
|
|
return &x ; // Noncompliant
|
|
}
|
|
int32_t & fn4 ( int32_t & x )
|
|
{
|
|
return x ; // Noncompliant
|
|
}
|
|
const int32_t & fn5 ( const int32_t & x )
|
|
{
|
|
return x ; // Noncompliant
|
|
}
|
|
----
|
|
|
|
|
|
== Resources
|
|
|
|
* MISRA {cpp}:2008, 7-5-3
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
The returned value is a [pointer||reference] to a parameter that is passed by reference.
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== relates to: S946
|
|
|
|
=== on 16 Oct 2014, 14:37:12 Ann Campbell wrote:
|
|
\[~samuel.mercier]
|
|
|
|
* need a See section
|
|
* I think you missed the mark on the message. The title makes clear that the param being returned was initially received as a reference, so advice to refactor to a reference param doesn't make a lot of sense to me. Instead, I'd advise switching to a ``++void++`` return.
|
|
|
|
endif::env-github,rspecator-view[]
|