2009-03-20

ユーザー定義リテラルと予約名の関係は分からない

現状の規格を読むに、どう考えてもUser Defined-Literalsは、グローバル名前空間では使えないように読める。しかし、ペーパーでは、予約語に関しては何にも触れられていないような気がする。

たとえば、n2747でも、既存の文法やCとの互換性、今後の言語の発展とどう折り合いをつけるのかしか考えられていない。どうも、誰も、アンダースコアで始まる、名前の予約の問題を考えていないのではないだろうか。実際、グローバル名前空間でオーバーロード関数の定義ができないというの仕様は、どう考えてもおかしい。いったいどうなっているのだろう。さっぱり分からない。

1 comment:

  1. グローバル名前空間で予約されているのはアンダースコアで始まる名前な
    わけですが、ユーザー定義リテラル演算子の「名前」は operator "" _a の
    全部であって、その一部である識別子 _a はグローバル名前空間の名前とは
    ならず、予約識別子の問題は関係ない。

    という解釈でいかがでしょう?

    これに対してダブルアンダースコアやアンダースコア後の英大文字などは
    マクロ名やキーワードとして処理系が定義する可能性があるので、やはり
    使えませんが。

    ReplyDelete

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.