2010-01-10 6 views
0

C++ 0x가 C++ 98보다 훨씬 재미있게 프로그래밍 될 것이라는 점을 기쁘게 생각하지만, 때로는 새로운 기능 중 일부가 중요하다고 생각하는 경우가 있습니다.
예 : 이니셜 라이저 목록은 배열에 대한 참조로 추론 될 수 없으며 가변적 템플릿은 멤버 팩이나 임의의 표현 확장을 허용하지 않으며 로컬 클래스는 템플릿이거나 템플릿을 포함하거나 클래스 멤버 초기화자를 가질 수 없으며 람다는 템플릿이 될 수 없습니다. constexpr은 문자열 리터럴의 처리 시간을 컴파일하는 데 도움이되지 않으며 사용자 정의 문자열 리터럴은 템플릿이 될 수 없지만 (사용자 정의 숫자 리터럴이 될 수 있음) decltype은 피연산자를 괄호로 묶을 지 여부에 따라 크게 다를 수 있습니다 (별도의 'exprtype'선호).좋아하는 C++ 0x 기능에 대해 가장 싫어하는 점은 무엇입니까?

표준위원회는 매우 어려운 선택과 절충안을 필요로한다는 것을 알고 있습니다. (이는 실제로 혁신을위한 것이 아니며 상당히 제한된 자원을 가지고 있기 때문에) 저는 그 의견을 깊이 존중하며 그들에게 매우 감사하고 있습니다 그들이하는 일을하기 때문에. 이 게시물은 자신의 노력을 경시하는 것이 아닙니다 (C++ 0x를 사용하기를 고대하고 있습니다). 그러나 다른 사람들이 이러한 기능 중 일부에 대해 얼마나 강하게 느끼는지 측정하는 것입니다. 그걸 염두에두고

, 나는 다음과 같은 질문에 당신에게 포즈 :

1) 당신이 완전히 만족의 새로운 기능은 무엇입니까?
2) 귀하가 부분적으로 만족하는 새로운 기능은 무엇이며 귀하를 더욱 만족스럽게하기 위해 무엇이 필요합니까?
3) 확실히 추가되지 않았 으면하는 새로운 기능은 무엇입니까?

모든 기능의 목록을 보려면 Stroustrup's List을 참조하십시오.

감사합니다.

답변

1

그들은 정렬과 메모리 모델 및 스레드 로컬 물건이 좋다. 10 년 전의 일이었을 것입니다. 그렇게 오래 걸려야 할 이유가 없습니다.

위임자 생성자는 내가 영원히 원했던 것이지만 구현은 끔찍합니다. 그것이 그들이 할 수있는 최선이라면 제거되어야합니다.

거의 모든 것이 합병증으로 추가되고 초기화 도구 목록에 난센스가 추가됩니다. 그래서 생성자를 올바르게 위임하는 것은 불가능합니다. 그들은 언어를 단순화하려고 노력해야하며, 많은 문제를 일으키는 더욱 복잡한 메타 프로그래밍을 추가하지 않아야합니다.

+0

lambdas add complication? 아니면'auto' 또는 범위 기반 for 루프입니까? Rvalue 참조는 라이브러리 개발자에게 복잡성을 더할 수 있지만, rvalue 참조를 볼 필요가없는 라이브러리 * 사용자의 경우에도 주요 성능이 향상됩니다. – jalf

+0

추가는 복잡한 정의 정의입니다. 배울 수있는 규칙이 많고, 컴파일러가 엉망이되는 장소가 많으며, C++의 경우에는 파리와 기괴한 초기화 넌센스, const 괴괴 망측 한 유형 폭발 등의 언어를 다시 만들어내는 격렬한 격려와 이러한 생각을하지 않으면 변화가 극적으로 복잡해질 것이다. (대부분의 새로운 개정이 그러 하듯이) 당신은 조금 순진하다. –

2

저는 C++ 0x에서 많은 것들이 매우 화가났습니다. 그들 모두는 같은 이유로 - 새로운 기능이 절대적으로 뛰어나지 만 역 호환성의 필요성으로 인해 많은 사람들이 못생긴 해킹처럼 보입니다.

예 1

SequenceClass(std::initializer_list<int> list); 

대신

SequenceClass(int... list); // or other nice in-language way 

예 2

class D [[base_check]] : public B { 
    void sone_func1 [[override]](); 

대신

class D : public B { 
    override void sone_func1(); 

예 3 : 좋아, 마지막 하나는 내 자신의 행복이다

std::shared_ptr<Target> m_target; 

대신

Target^m_target; 

...>

물론

이 모든 주관적입니다. 많은 사람들이 그렇지 않으면 그것을 선호합니다. 저를 귀찮게하는 것은 언어가 완전히 발전 할 수 없도록 하위 호환성을 유지해야한다는 것입니다.

난 정말 C++ 언젠가에 가깝다 "중단"메커니즘을 적용 할 수 있기를 바랍니다 ... 정말 사라 C 스타일 캐스트를보고 싶어요 -이 안전의 경우 특히 짜증나 2.0 이후 Khronos가 OpenGL에 한 것.

+0

C++에는 deprecation 메커니즘이 있습니다. std :: auto_ptr 예를 들면 –

+0

나는 그들이 C 스타일의 캐스트를 비하하고, gcc/MSVC에 -wdeprecated 플래그를 implenet하고 싶을 것이다. -_- –

0
  1. 람다는 자동,를 rvalue는
  2. 템플릿 형식 정의를 참조; 나는 구문이 어색하다고 생각하지만, 어떤 형태로 존재하기 때문에 기쁘다.
  3. 개념. 오 기다려 ... 내가 이겼어
관련 문제