关于标识符:Mettle C ++ Test Frameworks使用下划线

Mettle C++ Test Framework's use of undescore

本问题已经有最佳答案,请猛点这里访问。

看看Mettle测试框架,他们有这样的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <mettle.hpp>
using namespace mettle;

suite<> basic("a basic suite", [](auto &_) {

  _.test("a test", []() {
    expect(true, equal_to(true));
  });

  for(int i = 0; i < 4; i++) {
    _.test("test number" + std::to_string(i), [i]() {
      expect(i % 2, less(2));
    });
  }

  subsuite<>(_,"a subsuite", [](auto &_) {
    _.test("a sub-test", []() {
      expect(true, equal_to(true));
    });
  });

});

下划线的使用是否有什么特别之处,或者它是一个有效的变量名?


Is there something special going on with the use of underscore

下划线是用于标识符的有效字符。标识符中的下划线的一些用法被保留用于实现:在C++标识符中使用下划线的规则是什么?但这些都不适用于块范围内的单个下划线。

is it a valid variable name?

这里,是的。它不在全局命名空间中。