这是一种新的C ++ 11评论风格吗?

时间:2014-04-12 16:26:13

标签: c++ gcc c++11 g++ comments

虽然我试图理解为什么the code like int(*)(); g ++ 编译良好,但我发现了更奇怪的事情:

int main()
{
    int(*){} Is it C++11 or any other language?
}

此代码使用 g ++ 4.8.1 进行编译,请参阅live example(flags:-std=c++11 -pedantic-errors)。 clang 3.4 vc ++ 2013 都没有编译它。

是否只有 g ++ 支持新的C ++ 11样式注释?还是编译错误?


以下是我发现的关于这种风格的评论":

  1. 评论的通常结构(可以省略的部分括在括号[ ... ]中):

    int // or another valid C++ type
    (*) // or another sequence of '*' and/or '&' characters with nonzero length
    {"[Comment header]"}
    [Comment body]
    {[Comment footnote]}
    
  2. 可以使用;来代替使用脚注终止符号int(*){} Comment ;

  3. 如果注释是块{ ... }中的最后一个构造,则可以省略终止符号和脚注:{ int(*){} Comment }
  4. 允许的字符是以下列表中的数字,英文字母和字符:- + * / % & | ^ ~ = . , : ! ? $ ( ) [ ] < >
  5. 评论正文或脚注中不允许使用以下字符:; { } # @
  6. 注释正文或脚注中允许使用字符文字'...'和字符串文字"...",但符号'"本身不能单独使用。
  7. 通常的C ++评论// .../* ... */在新的&#34;评论&#34;中正常工作。预处理程序指令,宏,有向图和三字图也可以正常工作(live example):

    #define TerminatingSymbol ;
    
        int(*) ??< %> // a pair of trigraph and digraph
        "This is a string" // string literal
    #if 1
        Comment
    #endif
        TerminatingSymbol
        std::cout << "Hello, ";
        int(*){} /* Character literal: */ 'c' <% ??>
        std::cout << "world!" << std::endl;
    
  8. 我无法理解浮点文字是如何在这样的&#34;评论&#34;中工作的。


  9. The following code sample说明了新评论&#34;

    的功能
    #include <iostream>
    
    int main()
    {
        void(*){} do not try this float; // simple C++ keywords are allowed, of course
        std::cout << "1";
        int(&){"Allowed characters"}
        - + * / % & | ^ ~ = . , : ! ? $ ( ) [ ] < > ; // ';' itself is not allowed
        std::cout << "2";
        char(************************************)
        {"William Blake wrote:"}
        Tyger! Tyger! burning bright
        In the forests of the night,
        What immortal hand or eye
        Could frame thy fearful symmetry?
        {"The Tyger", 1794}
        std::cout << "3";
        float(*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*)
        {"Some formulas"}
        2 x 2 = 4
        pi ~= 3.145926 ...
        E = m * c ^ 2
        a ^ n + b ^ n != c ^ n, n > 2
        {42}
        std::cout << "4";
        unsigned(*(*(*(*(*(*(*(*(*(*())))))))))){}
        It is a last comment
    }
    

0 个答案:

没有答案