[[ deprecated ]] does not compile with using statements
[[deprecated]]
is incompatible with using
statements (at least for me with gcc62 and gcc7). Building this header alone (i.e. a one-line cpp file that does only the include) results in an error
instead of the desired warning:
In file included from GaudiKernel/GaudiKernel/GaudiKernel/DataObjIDProperty.h.cpp:1:0:
../GaudiKernel/GaudiKernel/DataObjIDProperty.h:7:77: error: expected unqualified-id before 'using'
[[deprecated( "replace DataObjIDProperty by Gaudi::Property<DataObjID>" )]] using DataObjIDProperty =
^~~~~
../GaudiKernel/GaudiKernel/DataObjIDProperty.h:9:85: error: expected unqualified-id before 'using'
[[deprecated( "replace DataObjIDCollProperty by Gaudi::Property<DataObjIDColl>" )]] using DataObjIDCollProperty =
^~~~~
With a typedef
and an instantiation, one receives the desired warning
GaudiKernel/GaudiKernel/GaudiKernel/DataObjIDProperty.h.cpp:3:23: warning: 'DataObjIDCollProperty' is deprecated: replace DataObjIDCollProperty by Gaudi::Property<DataObjIDColl> [-Wdeprecated-declarations]
DataObjIDCollProperty a;
^
In file included from GaudiKernel/GaudiKernel/GaudiKernel/DataObjIDProperty.h.cpp:1:0:
../GaudiKernel/GaudiKernel/DataObjIDProperty.h:8:124: note: declared here
[[deprecated( "replace DataObjIDCollProperty by Gaudi::Property<DataObjIDColl>" )]] typedef Gaudi::Property<DataObjIDColl> DataObjIDCollProperty;
^~~~~~~~~~~~~~~~~~~~~
Edited by Paul Seyfert