2つの異なる型を乗算する結果の型を取得するにはどうすればよいですか?
template< typename TA, typename TB>
struct multiplier
{
using result_type = // something here finds result of TA * TB
result_type operator()( TA a, TB b ) const
{
return a * b;
}
};
C ++では、異なる型の2つの数値を乗算することが完全に有効であり、これにより、コンパイラーが認識している型の値が得られることを私は知っています。つまり、adouble
とanint
を掛けると、double
タイプの回答になります。
そのため、コンパイル時に型がわかっているテンプレートクラスでは、作成される型を決定できるはずです。実際、ラムダを作成して、この値の結果を返すことができます。
auto foo = [](int a, float b){ return a * b;}
auto c = foo( 13, 42.0 );
これにより、がc
になりますfloat
。
c ++ 11以下の機能しか使用できないことに注意してください。
decltype
これを行うために使用できます:
using result_type = decltype(std::declval<TA&>() * std::declval<TB&>());
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加