2010-09-05

やはりわからない文面

前回の投稿、本の虫: よく分からない文面

やはりわからない。そもそも、cv-qualifierは複数存在こともある。

void f( int const volatile ) ;

しかし、文面は、"Any cv-qualifier..."である。cv-qualifiersではない。とすると、この場合、constかvolatileのどちらかひとつだけが取り除かれるのだろうか。しかし思うに、この場合の関数fの型は、void (int)であるはずだ。とすれば、複数のcv-qualifier(s)を消し去っているわけだ。これまた疑問である。

やはり思うに、Any cv-qualifier modifying a parameter typeとは、any top-level cv-qualifiersと同じ意味ではなかろうかと思う。ではなぜそう書かないのかというと、これまた分からない。

さらに分からないのは、なぜここだけ、deleteという言葉を使っているのかということだ。普通、cv-qualifiersと関係する他の場所では、ignoreとかremoveという言葉を使っている。deleteという言葉は、このような取り除くという意味では、プリプロセッサーあたりでしか使われていない。

6 comments:

  1. > 複数のcv-qualifier(s)を消し去っているわけだ。これまた疑問である。

    "Any cv-qualifier modifying a parameter type is deleted."

    "All cv-qualifiers modifying parameter types are deleted."
    は同じ意味です。高校の受験英語でよく出てくるAny←→Allの書き換えです。

    ただ、後者のように書くと、ひとつのcv-qualifierがひとつのparameter typeを修飾するという関係が不明瞭になるので前者の形で書いてあるわけです。

    ReplyDelete
  2. 3.9.3 の 1 に

    3.9.1 と 3.9.2 で言及された型は
    cv-unqualified型 である。

    とあり、

    cv-unqualified complete or incomplete object type
    もしくは
    void
    である
    各々の型は
    それぞれ
    3つの cv-qualified バージョン
    を持つ。

    とあるので

    int なら
    const int, volatile int, const volatile int

    int * なら
    int * const, int * volatile, int * const volatile

    const int * なら
    const int * const, const int * volatile, const int * const volatile

    volatile int * なら
    volatile int * const, volatile int * volatile, volatile int * const volatile

    const volatile int * なら
    const volatile int * const, const volatile int * volatile, const volatile int * const

    がそれぞれの cv-qualified バージョンなので
    どの(any) cv-qualified も
    is deleted と言うことは、要するに、
    どの(any) cv-qualifiedバージョン も
    cv-unqualifeid に戻すんだから

    int const * const

    int const *
    となるから文面に不思議はないかな。

    ReplyDelete
  3. [訂正]
    > const volatile int * なら
    const volatile int * const, const volatile int * volatile, const volatile int * const

    const volatile int * なら
    const volatile int * const, const volatile int * volatile, const volatile int * const volatile

    ReplyDelete
  4. 3.9.3 の 1 に

    3.9.1 と 3.9.2 で言及された型は
    cv-unqualified型 である。

    とあり、

    cv-unqualified complete or incomplete object type
    もしくは
    void
    である
    各々の型は
    それぞれ
    3つの cv-qualified バージョン
    を持つ。

    とあるので

    int なら
    const int, volatile int, const volatile int

    int * なら
    int * const, int * volatile, int * const volatile

    const int * なら
    const int * const, const int * volatile, const int * const volatile

    volatile int * なら
    volatile int * const, volatile int * volatile, volatile int * const volatile

    const volatile int * なら
    const volatile int * const, const volatile int * volatile, const volatile int * const volatile

    が cv-qualified バージョンなので
    どの(any) cv-qualified も
    is deleted と言うことは、要するに、
    どの(any) cv-qualifiedバージョンも
    cv-unqualifeid に戻すんだから

    int const * const

    int const *
    で文面的には不思議はないかな。

    ReplyDelete
  5. 3.9.3 の 1 に

    3.9.1 と 3.9.2 で言及された型は
    cv-unqualified型 である。

    とあり、

    cv-unqualified complete or incomplete object type
    もしくは
    void
    である
    各々の型は
    それぞれ
    3つの cv-qualified バージョン
    を持つ。

    とあるので

    int なら
    const int, volatile int, const volatile int

    int * なら
    int * const, int * volatile, int * const volatile

    const int * なら
    const int * const, const int * volatile, const int * const volatile

    volatile int * なら
    volatile int * const, volatile int * volatile, volatile int * const volatile

    const volatile int * なら
    const volatile int * const, const volatile int * volatile, const volatile int * const volatile

    が cv-qualified バージョンなので、
    どの(any) cv-qualified も
    is deleted と言うことは、要するに、
    どの(any) cv-qualifiedバージョンも
    cv-unqualifeid に戻すんだから

    int const * const

    int const *
    で文面的には不思議はないかな。

    ReplyDelete
  6. # 最初のが消えたようなので再投稿


    3.9.3 の 1 に

    3.9.1 と 3.9.2 で言及された型は
    cv-unqualified型 である。

    とあり、

    cv-unqualified complete or incomplete object type
    もしくは
    void
    である
    各々の型は
    それぞれ
    3つの cv-qualified バージョン
    を持つ。

    とあるので

    int なら
    const int, volatile int, const volatile int

    int * なら
    int * const, int * volatile, int * const volatile

    const int * なら
    const int * const, const int * volatile, const int * const volatile

    volatile int * なら
    volatile int * const, volatile int * volatile, volatile int * const volatile

    const volatile int * なら
    const volatile int * const, const volatile int * volatile, const volatile int * const volatile

    が cv-qualified バージョンなので、
    どの(any) cv-qualified も
    is deleted と言うことは、要するに、
    どの(any) cv-qualifiedバージョンも
    cv-unqualifeid に戻すんだから

    int const * const

    int const *
    で文面的には不思議はないかな。

    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.