在我的印象中,我似乎看到了类似的东西:
A:::b()
Run Code Online (Sandbox Code Playgroud)
但是我不记得它是不是c ++,也是在c ++中搜索过"三重冒号"之后但是在c ++中看起来很少有关于它的信息,有没有例子代码可以在代码中有3个冒号(:: :)有效的语法?
小智 6
这有点偏离主题,因为它涉及内联汇编而不是C ++本身。但是,这是给那些在以下表达式中看到此运算符后(如我一样)到达此处的人的提示:
asm volatile("" ::: "memory");
Run Code Online (Sandbox Code Playgroud)
gcc使用此语法来告诉编译器创建“内存屏障”。维基百科的“ 内存排序”主题比我能提供的更好。
鉴于全球功能b:
int b() {
return 5;
}
Run Code Online (Sandbox Code Playgroud)
有两个(实际上,如果你有创意的话,每个Steephen的答案会更多1)这种情况会有效,但只有空格:
作为标签:
int main() {
A: ::b();
}
Run Code Online (Sandbox Code Playgroud)作为条件表达式的一部分:
int main() {
int A = 0;
int result = true ? A: ::b();
}
Run Code Online (Sandbox Code Playgroud)需要空间的原因是因为C++词法是贪婪,总是LEXES :::为::其次:,从不:其次::.(一个明显的例外是>>允许结束两个模板参数/参数列表,因为特殊的更改C++ 11.)
1:查看访问修饰符,继承,构造函数初始化列表的示例.
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |