7
は、私はコンセプトを持っていると言う:短い形式の概念を使用している場合コンセプトから型を取り出す方法は?
template < typename Group > concept bool GGroup =
requires() { typename Group::Inner; };
は、どのように私はタイプInner
を取得することができますか?
void doSomething(const GGroup& group)
{
// an ugly alternative
using Inner = typename std::decay_t<decltype(group)>::Inner;
//// could be something like:
// using Inner = GGroup::Inner;
// or
// using Inner = underlyingtype(GGroup)::Inner;
}
長いフォームを使用するとどうなるでしょう: 'template void doSomething(const Group&group){... Group :: Inner ...}'? –
ach
@AndreyChernyakhovskiyはい、ただし、要点は短い形式で行うことです。 – Vahagn
あなたは自分の目的を打ち負かします。ショートフォームを使用することはできません(実際のタイプへの不要な参照を排除することがポイントです)。同時に、実際のタイプを参照してください。言語デザイナーにとって、 'GGroup :: Inner'のようなものはあいまいなのでオプションではありませんでした。 'doSomething(const GGroup&group1、const GGroup&group2)'があれば 'template void doSomething(const Group1&group1、const Group2&group2)'と同等です。どちらが 'GGroup'を参照するのでしょうか? –
ach