68
68
69
69
</ head >
70
70
< body >
71
- < header data-kunai-mdinfo ="{"meta": {"header": ["concepts"], "id-type": ["concept"], "namespace": ["std"], "cpp": ["cpp20"]}, "sources": [{"id": "77c82ffc736c20feb3887ca84e26d4d72be45546", "source": "#include <iostream>\n#include <concepts>\n\ntemplate<typename T, typename U>\nrequires std::derived_from<T, U>\nvoid check_derived() {\n std::cout << \"U is base class of T\" << std::endl;\n}\n\ntemplate<typename T, typename U>\nvoid check_derived() {\n std::cout << \"U and T are others\" << std::endl;\n}\n\nstruct Base {};\n\n//public\u7d99\u627f\nstruct Derived1 : Base {};\n//private\nstruct Derived2 : private Base {};\n//protected\nstruct Derived3 : protected Base {};\n//\u66d6\u6627\u306a\u7d99\u627f\nstruct Derived4 : Base, Derived1 {};\n//\u4eee\u60f3\u7d99\u627f\nstruct Derived5 : virtual public Base {};\nstruct Derived6 : virtual public Base {};\nstruct Derived7 : Derived5, Derived6 {};\n//\u7d99\u627f\u306e\u7d99\u627f\nstruct Derived8 : Derived1 {};\n\nint main()\n{\n check_derived<int, int>();\n check_derived<Base, const Base>();\n check_derived<Derived1, Base>();\n check_derived<Derived2, Base>();\n check_derived<Derived3, Base>();\n check_derived<Derived4, Base>();\n check_derived<Derived5, Base>();\n check_derived<Derived7, Base>();\n check_derived<Derived8, Base>();\n}\n"}], "page_id": ["reference", "concepts", "derived_from"]} ">
71
+ < header data-kunai-mdinfo ="{"meta": {"header": ["concepts"], "id-type": ["concept"], "namespace": ["std"], "cpp": ["cpp20"]}, "sources": [{"id": "0c22f27a1f1f2c2325f7f34c536b793b04f79f08", "source": "#include <iostream>\n#include <concepts>\n\ntemplate<typename T, typename U>\nrequires std::derived_from<T, U>\nvoid check_derived() {\n std::cout << \"U is base class of T\" << std::endl;\n}\n\ntemplate<typename T, typename U>\nvoid check_derived() {\n std::cout << \"U is not base class of T\" << std::endl;\n}\n\nstruct Base {};\n\n//public\u7d99\u627f\nstruct Derived1 : Base {};\n//private\u7d99\u627f\nstruct Derived2 : private Base {};\n//protected\u7d99\u627f\nstruct Derived3 : protected Base {};\n//\u66d6\u6627\u306a\u7d99\u627f\nstruct Derived4 : Base, Derived1 {};\n//\u4eee\u60f3\u7d99\u627f\nstruct Derived5 : virtual public Base {};\nstruct Derived6 : virtual public Base {};\nstruct Derived7 : Derived5, Derived6 {};\n//\u7d99\u627f\u306e\u7d99\u627f\nstruct Derived8 : Derived1 {};\n\nint main()\n{\n check_derived<int, int>();\n check_derived<Base, const Base>();\n check_derived<Derived1, Base>();\n check_derived<Derived2, Base>();\n check_derived<Derived3, Base>();\n check_derived<Derived4, Base>();\n check_derived<Derived5, Base>();\n check_derived<Derived7, Base>();\n check_derived<Derived8, Base>();\n}\n"}], "page_id": ["reference", "concepts", "derived_from"]} ">
72
72
< nav class ="navbar navbar-default " role ="navigation ">
73
73
< div class ="container-fluid ">
74
74
< div class ="navbar-header ">
188
188
189
189
< p class ="text-right "> < small >
190
190
最終更新日時(UTC):
191
- < span itemprop ="datePublished " content ="2024-06-11T13:45:38 ">
192
- 2024年06月11日 13時45分38秒
191
+ < span itemprop ="datePublished " content ="2025-07-08T13:32:19 ">
192
+ 2025年07月08日 13時32分19秒
193
193
</ span >
194
194
< br />
195
195
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
196
- < span itemprop ="name "> Akira Takahashi </ span >
196
+ < span itemprop ="name "> suomesta </ span >
197
197
</ span >
198
198
が更新
199
199
</ small > </ p >
@@ -229,9 +229,9 @@ <h2>備考</h2>
229
229
< li > < code > Base</ code > は< code > Derived</ code > の曖昧ではない< code > public</ code > 継承されたクラスである</ li >
230
230
< li > < code > Base</ code > と< code > Derived</ code > は< a class ="cpprefjp-defined-word " data-desc ="型をconstおよび・もしくはvolatileで修飾すること "> CV修飾</ a > の違いを除いて同じクラス型である</ li >
231
231
</ ul >
232
- < p > < code > Derived</ code > が< code > Base</ code > を公開継承しない場合、< code > < a href ="../type_traits/is_base_of.html "> std::is_base_of<Derived, Base ></ a > </ code > の判定とは異なる結果となる。</ p >
232
+ < p > < code > Derived</ code > が< code > Base</ code > を公開継承しない場合、< code > < a href ="../type_traits/is_base_of.html "> std::is_base_of<Base, Derived ></ a > </ code > の判定とは異なる結果となる。</ p >
233
233
< h2 > 例</ h2 >
234
- < p > < div class ="yata " id ="77c82ffc736c20feb3887ca84e26d4d72be45546 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
234
+ < p > < div class ="yata " id ="0c22f27a1f1f2c2325f7f34c536b793b04f79f08 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
235
235
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../concepts.html "> <concepts></ a > </ span > < span class ="cp "> </ span >
236
236
237
237
< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> typename</ span > < span class ="n "> T</ span > < span class ="p "> ,</ span > < span class ="k "> typename</ span > < span class ="n "> U</ span > < span class ="o "> ></ span >
@@ -242,16 +242,16 @@ <h2>例</h2>
242
242
243
243
< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> typename</ span > < span class ="n "> T</ span > < span class ="p "> ,</ span > < span class ="k "> typename</ span > < span class ="n "> U</ span > < span class ="o "> ></ span >
244
244
< span class ="kt "> void</ span > < span class ="n "> check_derived</ span > < span class ="p "> ()</ span > < span class ="p "> {</ span >
245
- < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="s "> "U and T are others "</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
245
+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="s "> "U is not base class of T "</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
246
246
< span class ="p "> }</ span >
247
247
248
248
< span class ="k "> struct</ span > < span class ="n "> Base</ span > < span class ="p "> {};</ span >
249
249
250
250
< span class ="c1 "> //public継承</ span >
251
251
< span class ="k "> struct</ span > < span class ="nl "> Derived1</ span > < span class ="p "> :</ span > < span class ="n "> Base</ span > < span class ="p "> {};</ span >
252
- < span class ="c1 "> //private </ span >
252
+ < span class ="c1 "> //private継承 </ span >
253
253
< span class ="k "> struct</ span > < span class ="nl "> Derived2</ span > < span class ="p "> :</ span > < span class ="k "> private</ span > < span class ="n "> Base</ span > < span class ="p "> {};</ span >
254
- < span class ="c1 "> //protected </ span >
254
+ < span class ="c1 "> //protected継承 </ span >
255
255
< span class ="k "> struct</ span > < span class ="nl "> Derived3</ span > < span class ="p "> :</ span > < span class ="k "> protected</ span > < span class ="n "> Base</ span > < span class ="p "> {};</ span >
256
256
< span class ="c1 "> //曖昧な継承</ span >
257
257
< span class ="k "> struct</ span > < span class ="nl "> Derived4</ span > < span class ="p "> :</ span > < span class ="n "> Base</ span > < span class ="p "> ,</ span > < span class ="n "> Derived1</ span > < span class ="p "> {};</ span >
@@ -277,12 +277,12 @@ <h2>例</h2>
277
277
</ code > </ pre > </ div >
278
278
</ div > </ p >
279
279
< h3 > 出力</ h3 >
280
- < p > < pre > < code > U and T are others
280
+ < p > < pre > < code > U is not base class of T
281
281
U is base class of T
282
282
U is base class of T
283
- U and T are others
284
- U and T are others
285
- U and T are others
283
+ U is not base class of T
284
+ U is not base class of T
285
+ U is not base class of T
286
286
U is base class of T
287
287
U is base class of T
288
288
U is base class of T
0 commit comments