「ある式の評価結果が特定コンセプトを満たすこと」を制約するが、このとき標準コンセプトstd::same_as/std::convertible_toを適切に使い分ける必要がある。下記コードのコンセプトC0では式t.dataがint型へと変換可能(convertible_to<int>)と制約しているが、コンセプトC1のようにint型と等しい(same_as<int>)と制約するとプログラマの期待通りに動作しない。U>;*1と等価である。ここでdecltype指定子オペランドが括弧付きの式(E)となることに留意。...};クラスのデータメンバ型をsame_asコンセプトで制約する場合は、下記コンセプトC2のように入れ子要件(nested-requirement)を利用する。OK下記コンセプトC3のように複合要件とsame_asコンセプトを組み合わせた場合、データメンバ型はintまたはint&いずれも制約を満たす。これはsame_asコンセプト利用意図からすると、不適切な制約表現といえる。18.4.4/p1より一部引用。std::convertible_tohttps://twitter.com/yohhoy/status/1187167956419039232*1:単純要件(simple-requirement)と入れ子要件(nested-requirement)の2つで表現される。読み取れる記述がなされ、実際には参照型/値型の両方を許容するコンセプトはトラブルの元になる可能性が高い。1注目記事はてなブログをはじめよう!yohhoyさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。