实际使用指向成员非类型模板参数的指针

时间:2016-12-31 11:41:42

标签: c++ templates

指向成员的指针作为非类型模板参数的用例是什么?

例如:

class X {
public:
    int n;
};


template <typename T, T nontype_param>
class C
{
public:
    void doSomething()
    {
        //what goes here to access or use nontype_param?
    }
};

void test()
{
    C<int X::*, &X::n> c;
    c.doSomething();
}

1 个答案:

答案 0 :(得分:0)

Bjarne的书引用:

类型模板参数可以在模板参数列表中稍后用作类型。例如:

$routeProvider
.when('/Book/:bookId', {
  templateUrl: 'book.html',
  controller: 'BookController'
})

当与默认模板参数(第25.2.5节)结合使用时,这变得特别有用;对于 例如:

template<typename T, T default_value>
class Vec {
 // ...
};

Vec<int,42> c1;
Vec<string,""> c2;