我想要一个将 X 作为模板参数的函数对象。有时它是一个对象(/引用),有时它是一个指向对象的指针。它很少是指向对象的指针。是否有一些模板魔术我可以根据需要多次获取 p / *p / **p 来获取对象本身?
问问题
71 次
1 回答
4
如果它只是指针层,那么简单的模板重载就可以了。你甚至可以将它封装在一个 CRTP mixin 中(虽然这需要一些元编程,所以我不会在这里演示)。
struct drill_ftor {
foo operator() ( bar & x ) {}
template< typename t >
foo operator() ( t * x ) { return (*this)( * x ); }
};
模板化参数t *
匹配bar *
, bar **
, bar ****
, 或其他。它也匹配int *
,但这只会导致错误,因为没有重载匹配operator() ( int )
。
于 2013-07-01T23:05:44.517 回答