Прежде чем ответить, обратите внимание, что другой вопрос тесно связан.
Стандарт C++17 (черновик здесь< /а>), разд. 6.2(2.8), дает следующий пример:
struct S { static const int x = 0; };
const int &f(const int &r);
int n = b ? (1, S::x) // S::x is not odr-used here
: f(S::x); // S::x is odr-used here, so a definition is required
"odr" в примере означает "правило с одним определением", но комментарий к примеру "S::x здесь не используется odr" кажется мне чепухой. Это?
Я не языковой юрист, но, к сожалению, комментарий не передает мне правдоподобного или приблизительного представления. Это говорит о том, что мне не хватает концепции.
С другой стороны, 1600-страничный документ, подобный стандарту C++17, может содержать некоторые ошибки. Я не критикую, а просто хочу убедиться, что я понял.
Комментарий ерунда или что-то разумное имеет в виду? Как или почему, пожалуйста?
S::x
дает постоянное выражение, поэтомуS::x
не используется в odr для[basic.def.odr]/4
и[expr.const]/2.7
. - person YSC   schedule 13.02.2019static const
элементов данных. Таким образом, я ни о чем не беспокоился. Спасибо за ссылку. - person thb   schedule 13.02.2019