2010-01-25

C++0xの字句について

以下のコードは、完全にwell-formedなC++0xのコードである。

// 変数(U+5909, U+6570)
int \u5909\u6570 = 0 ;

C++0xでは、universal-character-nameが追加されている。Unicodeのコードポイントを、直接記述できるのだ。これは、なんと識別子にも使える。したがって、上記のコードは、well-formedなC++0xのコードであり、いやしくもC++0x完全準拠を謳うコンパイラならば、必ずコンパイルが通るべきコードである。

また、以下のコードはimplementation-dependantである。

int 変数 = 0 ;

ただし、ill-formedとは規定されていない。また、実装がこのような実装依存の文字をサポートしている場合の挙動が規定されている。したがって、実装によっては、このコードは通る。

もちろん、これはプリプロセッサのトークンにも適用される

#define λ []

std::vector<int> v ;
std::for_each(v.begin(), v.end(),
    λ(int value){ std::cout << value << std::endl ; } ) ;

まあ、流行るとは思えないが、参考までに。

2 comments:

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.