Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh menguatkuasakan kekangan pada parameter templat dalam C?
Kekangan Templat dalam C
Dalam C , pada masa ini tiada sokongan terbina dalam untuk menguatkuasakan kekangan pada parameter templat seperti yang dilihat dalam C# menggunakan kekangan generik. Walau bagaimanapun, terdapat penyelesaian untuk mencapai kesan yang serupa.
C 11 Static Aserstion
C 11 menyediakan static_assert macro dan std::is_base_of templat untuk melaksanakan masa kompilasi cek. Dalam contoh yang disediakan, anda boleh menggunakan ini seperti berikut:
<code class="cpp">#include <type_traits> template<typename T> class Foo { Foo() { // Compile-time check static_assert(std::is_base_of<IFoo, T>::value, "type parameter of this class must derive from IFoo"); // ... } };</code>
Ini memastikan bahawa parameter T mesti diperoleh daripada IFoo pada masa penyusunan, menghalang instantiasi seperti Foo
Kekangan Templat C 0x
Perhatikan bahawa C 0x, juga dikenali sebagai C 17, memperkenalkan sokongan asli untuk konsep kekangan templat, membolehkan anda untuk menentukan secara langsung kekangan pada parameter templat menggunakan sintaks seperti templat
Atas ialah kandungan terperinci Bagaimanakah saya boleh menguatkuasakan kekangan pada parameter templat dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!