C では Auto を引数として使用できますか?
C では、 auto を引数として別の関数に渡すことが問題になっています。議論。以前は、型推論があいまいなため、これは不可能でした。ただし、C 20 では、この機能を可能にする重要な変更が導入されました。
C 20: 制約のない Auto パラメーター
C 20 では、既知の関数パラメーター タイプとして auto を使用できるようになります。 「制約のない自動パラメータ」として。この機能は、制約なしで任意の型を渡すことができるため、最大限の柔軟性を提供します。
int function(auto data) { // Do something, no constraints on data }
この構文は、任意の型を受け入れることができる短縮関数テンプレートを定義するのと同等です。
C 20: 制約付き自動パラメータ
制約のない自動に加えてパラメータと同様に、C 20 は概念を使用した制約付き自動パラメータもサポートします。概念は、型の要件を指定する制約です。
void function(const Sortable auto& data) { // Do something that requires data to be Sortable // Assuming there is a concept named Sortable }
この例では、Sortable 概念は、データの型を Sortable インターフェイスを実装する型に制限します。
省略された関数テンプレート
制約のない自動パラメータを使用して、省略された関数テンプレート。短縮関数テンプレートは、関数の引数からテンプレート引数を推定するテンプレート関数です。これにより、より簡潔で柔軟な関数宣言が可能になります。
template<typename T> void print(T data) { std::cout << data << std::endl; } int main() { auto data = 42; print(data); // Assumed to print 42 }
この例では、print 関数は、指定された引数に基づいてデータの型を推定する短縮された関数テンプレートです。
以上がAuto は C の関数の引数として使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。