boost :: remove_pointer如何工作?

时间:2013-07-06 03:29:00

标签: c++ templates metaprogramming

因此remove_reference或remove_pointer总是返回基元类型。

我知道他们在模板元编程中使用所谓的模板特化来做到这一点,但我不太明白。

例如下面。

template<class T>
struct AAA
{
    typedef T Type;
};

template<class T>
struct AAA<T*>
{
    // Why does T become int, not int * all of sudden?
    // How come does this get rid of '*' in a specific way?
    typedef T Type;
};

int main()
{
    AAA<int *>::Type MyVar = 3; // MyVar is not a pointer!
    return 0;
}

显然我在使用模板时遗漏了一些东西,或者某些指定的规则,我找不到任何可以解释这一点的好文章。

任何帮助都将不胜感激。

谢谢你。

1 个答案:

答案 0 :(得分:2)

// Why does T become int, not int * all of sudden?

T*int*,因此T必须为int