#include <iostream>
using namespace std;
struct true_type{};
struct false_type{};
template<class _T>
struct IteratorTrait
{
typedef false_type is_base_type;
};
template<class _L, class _R>
bool Copy(_L* _pl, _R* _pr)
{
return Copy(_pl, _pr, IteratorTrait<_R>::is_base_type());
}
template<class _L, class _R>
bool Copy(_L* _pl, _R* _pr, true_type)
{
cout<<"Copy, true_type"<<endl;
return true;
}
template<class _L, class _R>
bool Copy(_L* _pl, _R* _pr, false_type)
{
cout<<"Copy, false_type"<<endl;
return true;
}
class A{};
class B{};
class C{};
template<>
struct IteratorTrait<C>
{
typedef true_type is_base_type;
};
void main()
{
A a;
B b;
C c;
Copy(&a, &b);
Copy(&a, &c);
system("pause");
}
//----------
traits 技术可用于算法优化。 例如接口总是整个队列和相关数据, 但是通过traits决定是所有都遍历,还是取特定ID。

本文介绍了一种使用traits技术优化算法的方法。通过实例演示了如何利用模板特化和条件编译来区分不同类型的迭代器,并据此选择合适的处理方式。这种方法能够有效地减少不必要的运算,提高程序效率。
358

被折叠的 条评论
为什么被折叠?



