Submit Search
C++14 solve explicit_default_constructor
1 like
7,306 views
Akira Takahashi
1 of 7
Download now
Download to read offline
1
2
3
4
5
6
7
More Related Content
KEY
Cost of ovs receiving process
Takuya ASADA
PPTX
ParliamentでGeoSPARQL
Teppei Inaba
PPTX
Distributed processwithapex&flow lowcode
furuCRM株式会社 CEO/Dreamforce Vietnam Founder
PDF
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
次朗 永島
PPTX
Wpfと非同期
yone64
PPTX
Kubernetesできること
iPride Co., Ltd.
PDF
Introduction to boost test
Kohsuke Yuasa
PPTX
Pub/Sub model, msm, and asio
Takatoshi Kondo
Cost of ovs receiving process
Takuya ASADA
ParliamentでGeoSPARQL
Teppei Inaba
Distributed processwithapex&flow lowcode
furuCRM株式会社 CEO/Dreamforce Vietnam Founder
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
次朗 永島
Wpfと非同期
yone64
Kubernetesできること
iPride Co., Ltd.
Introduction to boost test
Kohsuke Yuasa
Pub/Sub model, msm, and asio
Takatoshi Kondo
More from Akira Takahashi
(20)
PPTX
Cpp20 overview language features
Akira Takahashi
PDF
Cppmix 02
Akira Takahashi
PPTX
Cppmix 01
Akira Takahashi
PDF
Modern C++ Learning
Akira Takahashi
PDF
cpprefjp documentation
Akira Takahashi
PDF
C++1z draft
Akira Takahashi
PDF
Boost tour 1_61_0 merge
Akira Takahashi
PDF
Boost tour 1_61_0
Akira Takahashi
PDF
error handling using expected
Akira Takahashi
PDF
Boost tour 1.60.0 merge
Akira Takahashi
PDF
Boost tour 1.60.0
Akira Takahashi
PDF
Boost container feature
Akira Takahashi
PDF
Boost Tour 1_58_0 merge
Akira Takahashi
PDF
Boost Tour 1_58_0
Akira Takahashi
PDF
C++14 enum hash
Akira Takahashi
PDF
Multi paradigm design
Akira Takahashi
PDF
Start Concurrent
Akira Takahashi
PDF
Programmer mind
Akira Takahashi
PDF
Boost.Study 14 Opening
Akira Takahashi
PDF
Executors and schedulers
Akira Takahashi
Cpp20 overview language features
Akira Takahashi
Cppmix 02
Akira Takahashi
Cppmix 01
Akira Takahashi
Modern C++ Learning
Akira Takahashi
cpprefjp documentation
Akira Takahashi
C++1z draft
Akira Takahashi
Boost tour 1_61_0 merge
Akira Takahashi
Boost tour 1_61_0
Akira Takahashi
error handling using expected
Akira Takahashi
Boost tour 1.60.0 merge
Akira Takahashi
Boost tour 1.60.0
Akira Takahashi
Boost container feature
Akira Takahashi
Boost Tour 1_58_0 merge
Akira Takahashi
Boost Tour 1_58_0
Akira Takahashi
C++14 enum hash
Akira Takahashi
Multi paradigm design
Akira Takahashi
Start Concurrent
Akira Takahashi
Programmer mind
Akira Takahashi
Boost.Study 14 Opening
Akira Takahashi
Executors and schedulers
Akira Takahashi
Ad
C++14 solve explicit_default_constructor
1.
C++14 LWG.2193 explicitなデフォルトコンストラクタをなくす 高橋 晶(Akira
Takahashi) faithandbrave@longgate.co.jp 2014/06/27(金) WG21 C++14 DISレビュー会議
2.
まえがき • この資料は、C++14に取り入れられる予定の変更、LWG (Library Working
Group)のIssue 2194のレビューです。 • 2193. Default constructors for standard library containers are explicit • http://www.open-std.org/jtc1/sc22/wg21/docs/lwg- active.html#2193
3.
概要 • explicit Container(Allocator
alloc = Allocator()); • となっているデフォルトコンストラクタを、 以下のように分割する: • Container() : Container(Allocator()) {} • explicit Container(Allocator alloc);
4.
元々の問題 • 以下のコードが不適格になっていた: std::set<int> s
= {}; // エラー!explicitが付いている • このコードはClang 3.0でコンパイルエラーになっていた。 • この問題を解決するために、前述した解決策が提示されたが、 実際にはこの問題はEWG (Evolution Working Group)側で 処理された。 • そのためこのIssueでの解決策は、気持ち悪さの解消程度。
5.
変更対象 • basic_string • deque •
forward_list • list • vector • (multi)map • (multi)set • unordered_(multi)map • unordered_(multi)set
6.
ABIが壊れないか調査した • オーバーロードの追加は、ABIを壊さない。 • デフォルト引数の追加・削除は、ABIを壊さない。 •
よって、この変更はABIを壊さない。 • C++11でstd::vectorのresize()メンバ関数に以下の変更が 入ったが、その変更はABIを壊さなかった。 • void resize(size_type sz, T c = T()); • void resize(size_type sz); • void resize(size_type sz, const T& c);
7.
参照 • ABI Policy
and Guidelines - libstdc++ • http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html • Cxx11AbiCompatibility - GCC Wiki • http://gcc.gnu.org/wiki/Cxx11AbiCompatibility • Thiago Macieira: Binary compatibility for library developers • https://github.com/boostcon/cppnow_presentations_2013/blob/ master/tue/binary_compat_for_cpp_devs.pdf?raw=true
Download