1
私は範囲-v3ライブラリの私の読書を続けて、私はすべてのテンプレートの種類の有効な式についてのチェックは、テーリング "、42"式私はその目的が何であるのだろうか。たとえば:C++の範囲-v3の概念::末尾の "、42"で
namespace concepts {
constexpr struct valid_expr
{
template<typename... T>
void operator()(T&&...) const;
};
}
struct ExplicitlyConvertibleTo
{
template<typename From, typename To>
auto requires_(From (&from)()) -> decltype(
concepts::valid_expr(
((void) static_cast<To>(from()), 42)
));
};
私は、ボイドキャストは、カンマ演算子のいくつかの過負荷を避けるために、コンマ演算子の使用を強制するために、内側の括弧のようなその実装のポイントのいくつかを、理解などが、なぜ単に何かのようなものを書いているだけではない?
concepts::valid_expr(static_cast<To>(from()));
'concepts :: valid_expr :: operator()'が 'void'を返し、'(void、42) '式の型が' int'であるという事実に関連していますか?例えば'void'の場合と非voidの場合を扱う外部コードの2つの枝を避けるためにここでは見ていないのですか? –