In general, the address of an object is odr-use, which requires the object to be defined somewhere (causing linker errors if it is not). However, address selection may not be considered odr-use if the resulting expression is a discarded value. Perhaps your use of this may be handled by some compilers as part of this exception, as it is passed as a parameter to a function that immediately discards it.
source share