지금 C++은 이거 컴파일 안됨


#include <algorithm>

#include <vector>

using namespace std;

using namespace std::ranges;


int main() {

  vector<int> v;

  sort(v);

}


왜냐하면 std::sort랑 std::ranges::sort가 충돌 나기 때문임

표준을 왜 이렇게 정했냐면, 표준 위원회 놈들이 이렇게 생각했기 때문임


"어차피 using namespace std; 다 금지하잖아? using namespace std::ranges; 하나만 써라. 뭘 두개 동시에 쓰려고 함?"


아니 ㅆㅂ 이게 가스라이팅 아님?

using namespace std;를 금지하고 말고는 집단이나 개인이 알아서 할 일이지,

왜 그런 convention을 언어 표준 차원에서 강제하면서

내가 편하게 타이핑하고 싶은 코드의 컴파일을 막아버리는 거임?


이렇게 된 원인은 using namespace std;를 쓰면 C++ 프로그래머들이 지랄 발광을 하기 때문인데

이것의 근본적인 이유는 근본적으로 module 개념이 없는 개틀딱 언어라서

#include될때 export되는 코드의 범위를 조절할 수 없었기 때문임.


즉 module이 완전히 자리잡으면 파이썬처럼 module 내에서는

using namespace std; 쓴 뒤에 이게 export 될 걱정 없이 쾌적한 코딩이 가능함.

module이 #include를 대체하면 using namespace std;도 자리잡을 것이고

이거 쓴다고 지랄하는 사람들도 없어질거임


근데 지금 구현체들 다들 버그가 존나 많아서 제대로 쓸수가 없음


어제 gcc 써봤더니 모듈 내에서 unique_ptr 생성해서 다른 모듈로 넘겨줬더니 segfault 나서 뒤짐

msvc 써봤더니 모듈 내에서 선언한 템플릿 인자를 다른 모듈이 못알아봐서 컴파일이 안됨



아 빨 리 쓰 고 싶 다!