組み込み開発者向けの興味深いC ++ 20機能

Cは依然として組み込みシステム開発者の間で人気のあるプログラミング言語ですが、実際にC ++を使用する開発者は十分にいます。





適切なC ++機能を使用すると、Cで記述された同様のアプリケーションのコードよりも効率が劣らないコードを記述できます。また、通常のプログラマーがCでいくつかの機能を実装するのは非常に面倒なので、場合によってはさらに効率的になります。追加のC ++機能を使用すると実装が簡単になります。





C ++ 20は、C ++の7番目の反復であり、その前に、たとえば、C ++ 17、C ++ 14、およびC ++ 11が続きます。各反復は新しい機能を追加しましたが、以前に追加されたいくつかの機能にも影響を与えました。たとえば、C ++ 14のautoキーワード





transl 。:





C ++ 14ではautoキーワードに新しいルールが導入されました以前は、式auto a{1, 2, 3}, b{1};



が許可されており、両方の変数はタイプinitializer_list<int>



でした。C ++ 14auto a{1, 2, 3};



では、コンパイルエラーが発生し、auto b{1};



正常にコンパイルされますが、変数のタイプはであり、ではint



ありませんinitializer_list<int>



これらの規則はauto a = {1, 2, 3}, b = {1};



、変数がまだタイプであるは適用されませんinitializer_list<int>











C ++ 11は大幅な変更が加えられており、組み込みシステムの開発者が常に最新のツールキットを使用するとは限らないため、組み込みシステムで使用される標準の最も広く使用されているバージョンです。何十年も続くプラットフォームを開発する場合、実績のある信頼性の高いソリューションが重要です。





, ++20 . . , « ». , , , x < 20



, x.operator<=>(20) < 0



. , , <, <=, >= >, , . x == y



operator<=>(x, y) == 0



.





. .:





« » @Viistomin « spaceship ( ) C++20»









++20 , :





  • ;





  • ;





  • ;





  • .





- , . ++11 constexpr , . ++20 , . , try/catch. .





consteval constexpr , , , , #define, ++.





. , . (. .: ) .





. .:





, @PkXwmpgN «C++20. Coroutines» , stackoverflow.









++20 coroutine_traits coroutine_handle. «».   , .





++17, . , . Ada SPARK, , C++20 .





, . , . – (. .: ), . . , cppreference.com, :





#include <string>
#include <cstddef>
#include <concepts>
using namespace std::literals; 

//   "Hashable",  
//   'T' ,    'a'  'T',
//   std::hash{}(a)      std::size_t
template <typename T>
concept Hashable = requires(T a) {
    { std::hash{}(a) } -> std::convertible_to<std::size_t>;
};
 
struct meow {};
 
template <Hashable T>
void f(T); //    ++20
 
//       :
// template<typename T>
//    requires Hashable<T>
// void f(T); 
// 
// template <typename T>
// void f(T) requires Hashable<T>; 
 
int main() {
  f("abc"s); // OK, std::string  Hashable
  f(meow{}); // : meow   Hashable
}

      
      



++20, , , , .





#include . import export , - #include.





#include . , . , . , . , , , ++.





, , Java Ada . , , . . , , #include.





, #include . .









- Ada SPARK, C++20 C++ . C++20, , . , . , .





, C++20, , , ++20.








All Articles