如何获得将两种不同类型相乘的结果类型,即
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++ 中,将两个不同类型的数值相乘是完全有效的,这将给出编译器已知类型的值。 IE。将 double
和 int
相乘将得到 double
类型的答案。
因此,在类型在编译时已知的模板类中,应该可以确定将要创建的类型。事实上,可以创建一个 lambda 来返回该值的结果,即
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&>());
关于c++ - 如何获得两种不同类型相乘的结果类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464396/