我如何定义一个模板类赋予一个类型的指针深度/水平?

我如何定义一个模板类,它提供代表一个(指针)的“深度”一个整型常量的类型作为输入模板参数提供? 例如,如果类被称为Depth ,以下将是正确的:

Depth<int ***>::value == 3 Depth<int>::value == 0

--------------解决方案-------------

template <typename T>
struct pointer_depth_impl
{
enum { value = 0 };
};

template <typename T>
struct pointer_depth_impl<T* const volatile>
{
enum { value = pointer_depth_impl<T const volatile>::value + 1 };
};

template <typename T>
struct pointer_depth
{
enum { value = pointer_depth_impl<T const volatile>::value };
};

它可以通过递归来完成。

template<typename T>
struct Depth
{
enum { value = 0 };
};

template<typename T>
struct Depth<T*>
{
enum { value = Depth<T>::value + 1 };
};

分类:C# 时间:2015-03-14 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.122 (s). 10 q(s)