簡體   English   中英

函數概念返回類型(必須為bool)

[英]Function concept return type (must be bool)

此頁面http://en.cppreference.com/w/cpp/language/constraints指示函數概念的返回類型必須為bool。 如果此處只有一個選項,那么首先要求指定返回類型的背后原理是什么?

為什么不只使用以下語法:

template <typename T>
concept DumbConcept() {
   return requires( T a,T b ) {
      requires std::is_same<decltype(a+b),bool>::value;
   };
}

如果此處只有一個選項,那么首先要求指定返回類型的背后原理是什么?

因為它是一個函數,並且函數具有返回類型。 不,真的,這就是理由。

C ++ 98的原始概念提案在很大程度上失敗了,因為它試圖做太多事情。 因此,“精簡概念”提案始於絕對最小可行功能:一種約束模板的方式以及一種定義約束的方式。 但是,作為最低生存功能, requires子句不僅限於概念; 它可以(並且仍然可以)接受任何常量表達式,而不僅僅是一個概念。

這樣,“概念”只是可以用某些特殊方式使用的奇特常數表達式。 概念必須能夠成為模板,並且必須能夠評估表達式。 由於C ++ 11/14沒有變量模板,因此當時針對“概念”定義的最小可行功能解決方案是使其成為constexpr函數。 確實,lites-lite功能的1.0版甚至沒有將concept作為關鍵字。 “概念”就是任何返回bool constexpr函數

顯然,概念設計是從那里開始的。

C ++ 20中采用的概念版本不包含函數概念。 而且它們還沒有包含變量概念的bool部分。 正如您所指出的那樣,這是多余的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM