6868
6969 </ head >
7070 < 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"]} ">
7272 < nav class ="navbar navbar-default " role ="navigation ">
7373 < div class ="container-fluid ">
7474 < div class ="navbar-header ">
188188
189189 < p class ="text-right "> < small >
190190 最終更新日時(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秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
196- < span itemprop ="name "> Akira Takahashi </ span >
196+ < span itemprop ="name "> suomesta </ span >
197197 </ span >
198198 が更新
199199 </ small > </ p >
@@ -229,9 +229,9 @@ <h2>備考</h2>
229229< li > < code > Base</ code > は< code > Derived</ code > の曖昧ではない< code > public</ code > 継承されたクラスである</ li >
230230< li > < code > Base</ code > と< code > Derived</ code > は< a class ="cpprefjp-defined-word " data-desc ="型をconstおよび・もしくはvolatileで修飾すること "> CV修飾</ a > の違いを除いて同じクラス型である</ li >
231231</ 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 >
233233< 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 >
235235< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../concepts.html "> <concepts></ a > </ span > < span class ="cp "> </ span >
236236
237237< 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>
242242
243243< 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 >
244244< 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 >
246246< span class ="p "> }</ span >
247247
248248< span class ="k "> struct</ span > < span class ="n "> Base</ span > < span class ="p "> {};</ span >
249249
250250< span class ="c1 "> //public継承</ span >
251251< 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 >
253253< 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 >
255255< 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 >
256256< span class ="c1 "> //曖昧な継承</ span >
257257< 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>
277277</ code > </ pre > </ div >
278278</ div > </ p >
279279< h3 > 出力</ h3 >
280- < p > < pre > < code > U and T are others
280+ < p > < pre > < code > U is not base class of T
281281U is base class of T
282282U 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
286286U is base class of T
287287U is base class of T
288288U is base class of T
0 commit comments