类定义中的类型名可见性

尽管现在的编译器能够正确理解数据成员(含有隐式的 this 指针)的使用,并在看到整个类定义之后再查找名字,类型名的查找则发生的很早,导致使用时可能看不到、或者使用了错误的类型声明。

所以,应该尽可能在类定义的开头写好类型别名。

#include <iostream>
#include <type_traits>

typedef int length;

class Point3d {
public:
  **void mumble(length val) { _val = val; }
  length mumble() { return _val; }

  static_assert(std::is_same_v<length, int>);

private:
  typedef float length;
  length _val;
};

int main() {}