#include <stdlib.h>
#include <stdio.h>
#include <type_traits>
#include <complex>
#include <iostream>
template <typename T> struct rdt_traits {};
template <> struct rdt_traits<float> { typedef float Type; };
template <> struct rdt_traits<double> { typedef double Type; };
template <typename T> struct rdt_traits<std::complex<T>> { typedef typename
rdt_traits<T>::Type Type; };
template <typename DT>
void f(DT a, typename rdt_traits<DT>::Type b)
{
std::cout << "b: " << b << std::endl;
}
class foo {};
int main(int argc, char* argv[])
{
std::complex<float> cf {1.1, 2.2};
std::complex<double> df {1.1, 2.2};
f<float>(4.5, 2.3);
f<double>(4.5, 2.3);
f<std::complex<float>>(cf, 1.3);
f<std::complex<double>>(df, 2.3);
//f<std::vector<double>>(2.5, 2.3); //compile failed
//f<std::complex<int>>(3, 5); //compile failed
//f<int>(3, 5.5);
//f<foo>(3, 5.5); //compile failed
return 0;
}
试下这个,
【 在 fangniuwawa (兰州放牛) 的大作中提到: 】
: 标 题: Re: 请教一个template中 enable_if用法的问题
: 发信站: 水木社区 (Sat May 23 14:11:20 2020), 站内
:
:
: 有
:
: 【 在 lwp (再也不跟人吵架了!!!) 的大作中提到: 】
: : 你dt的类型要限制吗?
:
: --
:
: ※ 来源:·水木社区
http://newsmth.net·[FROM: 219.246.52.*]
--
FROM 171.83.9.*