SlideShare a Scribd company logo
Enviar búsqueda
Cargar
C++14 solve explicit_default_constructor
Denunciar
Compartir
Akira Takahashi
Programmer en Preferred Networks, Inc.
Seguir
•
1 recomendación
•
7,303 vistas
1
de
7
C++14 solve explicit_default_constructor
•
1 recomendación
•
7,303 vistas
Denunciar
Compartir
Descargar ahora
Descargar para leer sin conexión
Akira Takahashi
Programmer en Preferred Networks, Inc.
Seguir
Recomendados
Cost of ovs receiving process por
Cost of ovs receiving process
Takuya ASADA
970 vistas
•
13 diapositivas
ParliamentでGeoSPARQL por
ParliamentでGeoSPARQL
Teppei Inaba
868 vistas
•
11 diapositivas
Distributed processwithapex&flow lowcode por
Distributed processwithapex&flow lowcode
furuCRM株式会社 CEO/Dreamforce Vietnam Founder
556 vistas
•
6 diapositivas
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク - por
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
次朗 永島
6.2K vistas
•
22 diapositivas
Wpfと非同期 por
Wpfと非同期
yone64
8.8K vistas
•
20 diapositivas
Kubernetesできること por
Kubernetesできること
iPride Co., Ltd.
354 vistas
•
14 diapositivas
Más contenido relacionado
Más de Akira Takahashi
Cpp20 overview language features por
Cpp20 overview language features
Akira Takahashi
891 vistas
•
28 diapositivas
Cppmix 02 por
Cppmix 02
Akira Takahashi
675 vistas
•
7 diapositivas
Cppmix 01 por
Cppmix 01
Akira Takahashi
1K vistas
•
11 diapositivas
Modern C++ Learning por
Modern C++ Learning
Akira Takahashi
18.5K vistas
•
12 diapositivas
cpprefjp documentation por
cpprefjp documentation
Akira Takahashi
1.3K vistas
•
23 diapositivas
C++1z draft por
C++1z draft
Akira Takahashi
6.6K vistas
•
67 diapositivas
Más de Akira Takahashi
(20)
Cpp20 overview language features por Akira Takahashi
Cpp20 overview language features
Akira Takahashi
•
891 vistas
Cppmix 02 por Akira Takahashi
Cppmix 02
Akira Takahashi
•
675 vistas
Cppmix 01 por Akira Takahashi
Cppmix 01
Akira Takahashi
•
1K vistas
Modern C++ Learning por Akira Takahashi
Modern C++ Learning
Akira Takahashi
•
18.5K vistas
cpprefjp documentation por Akira Takahashi
cpprefjp documentation
Akira Takahashi
•
1.3K vistas
C++1z draft por Akira Takahashi
C++1z draft
Akira Takahashi
•
6.6K vistas
Boost tour 1_61_0 merge por Akira Takahashi
Boost tour 1_61_0 merge
Akira Takahashi
•
2K vistas
Boost tour 1_61_0 por Akira Takahashi
Boost tour 1_61_0
Akira Takahashi
•
1.4K vistas
error handling using expected por Akira Takahashi
error handling using expected
Akira Takahashi
•
3K vistas
Boost tour 1.60.0 merge por Akira Takahashi
Boost tour 1.60.0 merge
Akira Takahashi
•
5.1K vistas
Boost tour 1.60.0 por Akira Takahashi
Boost tour 1.60.0
Akira Takahashi
•
2.1K vistas
Boost container feature por Akira Takahashi
Boost container feature
Akira Takahashi
•
3.4K vistas
Boost Tour 1_58_0 merge por Akira Takahashi
Boost Tour 1_58_0 merge
Akira Takahashi
•
4.8K vistas
Boost Tour 1_58_0 por Akira Takahashi
Boost Tour 1_58_0
Akira Takahashi
•
2.5K vistas
C++14 enum hash por Akira Takahashi
C++14 enum hash
Akira Takahashi
•
8.1K vistas
Multi paradigm design por Akira Takahashi
Multi paradigm design
Akira Takahashi
•
3.2K vistas
Start Concurrent por Akira Takahashi
Start Concurrent
Akira Takahashi
•
22.8K vistas
Programmer mind por Akira Takahashi
Programmer mind
Akira Takahashi
•
10K vistas
Boost.Study 14 Opening por Akira Takahashi
Boost.Study 14 Opening
Akira Takahashi
•
4.1K vistas
Executors and schedulers por Akira Takahashi
Executors and schedulers
Akira Takahashi
•
7.4K vistas
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