deprecated attribute location
FOAM_DEPRECATED_FOR macros invocations is incorrect. It is placed between type and method name, while according to  it should be before type.
Steps to reproduce
Build OpenFOAM v1912 with
std=c++14. Yes, currently code should be built with std=c++11 but eventually it will be upgraded to newer standard.
This change resolve the issue (example from
- ITstream& FOAM_DEPRECATED_FOR(2018-07, "lookup() method") - operator(const word& keyword) const + FOAM_DEPRECATED_FOR(2018-07, "lookup() method") + ITstream& operator(const word& keyword) const
What is the current bug behaviour?
If code is compiled with
std=c++14 current location of macros invocation produces the error:
~/OpenFOAM/OpenFOAM-v1912/src/OpenFOAM/lnInclude/SLListBase.H:223:18: error: 'deprecated' attribute cannot be applied to types bool FOAM_DEPRECATED_FOR(2019-01, "good() method") found() const ^ ~/OpenFOAM/OpenFOAM-v1912/src/OpenFOAM/lnInclude/stdFoam.H:59:52: note: expanded from macro 'FOAM_DEPRECATED_FOR' # define FOAM_DEPRECATED_FOR(since, replacement) [[deprecated("Since " #since "; use " #replacement)]]
What is the expected correct behavior?
Compilation with correct location of the attribute does not produce error.
- OpenFOAM version : v1912
- Operating system : macOS (10.15.4)
- Hardware info : N/A
- Compiler : Apple clang version 11.0.3 (clang-118.104.22.168)
Move macros invocation to correct location. See: deprecated-attribute.patch.