>>133 コンパイルして実験すればすぐわかる〜 struct A { int x; }; struct B : public A { }; struct C : public A { }; struct D : public B, public C { D() { std::cout << x << std::endl; // B::xなのかC::xなのか? } };
17.4.1.2 - Headers [lib.headers] -5- Names which are defined as macros in C shall be defined as macros in the C++ Standard Library, even if C grants license for implementation as functions. [Note: the names defined as macros in C include the following: assert, errno, offsetof, setjmp, va_arg, va_end, and va_start.--- end note]
"We should accept the fact that we made a serious mistake and rectify it, however belatedly, by explicitly allowing either of the two schemes for declaring C names in headers. " 「我々は深刻なミスを犯した事実を認め、2つのスキーマの両方を明示的に認めることによって、たとえ手遅れだとしても、これを修正するべきである。」
>>180 5.3.4-7 When the value of the expression in a direct-new-declarator is zero, the allocation function is called to allocate an array with no elements.
>>231 使えない。 ISO/IEC 14882:1998 14.3.2 Template nontype arguments -1 A template-argument for a non-type, non-template template-parameter shall be one of: - an integral constant-expression of integral or enumeration type; or - the name of a nontype template-parameter; or - the name of an object or function with external linkage, including function templates and function template-ids but excluding nonstatic class members, expressed as idexpression; or - the address of an object or function with external linkage, including function templates and function template-ids but excluding nonstatic class members, expressed as & idexpression where the & is optional if the name refers to a function or array; or - a pointer to member expressed as described in 5.3.1 .