Session Topic: Initial Thoughts on Effective C++11 « C++ and
Beyond 라는 강연을 근거로 Scott Meyers씨의 새로운 Effective C++ 시리즈를 예상하면 아래와 같다고 합니다.
명시적인 형태 선언보다 auto를 사용하자
오브젝트의 생성에서는 ()와
{}를 구별하자
auto + { expr } == std::initializer_list는
잊지 않도록
(auto x{1};/auto x={1};에서는std::initializer_list<int>형, auto x(1);/auto x=(1);애서는 int형.)
멤버 함수보다 비 멤버 함수 begin/end를 사용하자
std::thread 멤버 선언은 클래스 말미에 두자(멤버 변수 초기화 순서에 기인하는 버그 회피를 위해서)
멤버 함수의 밖에 내는 Lambda 식의 디폴트 캡쳐 모드에
주의(특히 this의 dangling
pointer화.)
컨테이너에는 Insertion(삽입) 보다 Emplacement(직접 구축)를 사용하자
비동기 처리가 필수적일 대는 std::launch::async 폴리시를
지정하자
약한 atomic 변수의 이용은 최소한으로(기본 값 std::memory_order_seq_cst 이외의 atomic 변수 접근 최대한 피한다.)
Universal Reference와 Rvalue Reference를 구별하자
move 조작은 존재하는 것도 아니고 낮은 비용이 아닌 것을
기억하자(의도 불명. 「언제라도 낮은 비용으로 move 할 수 있다고 생각하지 말아라」라고 하는 것?)
bind 보다 Lambda 식을
사용하자
스레딩 함수에는 가변 개수 인수보다 Lambda 식을 건네주자
(의도 불명. 아마 std::threadconstructor
인수 이야기.)
오버 서브 스크립션에 조심하자(시스템 병렬 도를 웃도는 스레드를
너무 만들지 않는 것.)
Universal Reference에서 인수를 건네줄 때는 std::forward의 적용을(이른바 “Perfect Forwarding”)
기본 배열보다 std::array를 사용하자
가능한 한 std::make_shared를 사용하자
std::shared_ptr 형태에서는 값 전달 보다 const 참조 전달을 사용하자(→C++의 shared_ptr를 함수로의 인수로서 건네주는 경우는 const 참조로)
인수의 복사가 필요하면 값 전달을 사용하자(복사가 필요하면 함수
호출과 동시에 실시하면 좋다.)
Wide 인터페이스 함수에서는 함부로 noexcept로 하지 않는다(아마→N3248
noexcept Prevents Library Validation)
복사 가능한 형태에서는 무브는 최적화 복사라고 생각하자
열거형(enum) 보다 형태 부착 열거형(enum class)를 사용하자
NULL이나 정수 0 보다
nullptr를 사용하자
std::enable_if, static_assert, =delete를
구별하자
출처 : http://d.hatena.ne.jp/yohhoy/20120418/p1
RECENT COMMENT