0
如果我想確定使用boost的數組(T)的下標運算符返回的類型,我需要使用哪種類型的簽名?請注意,我將使用它的數組不包含typedefs並且是第三方。如何確定給定數組類型的下標運算符的返回類型是否帶有boost?
例子。我想確定:
SomeArray<int> tmp(1);
int& somevalue = tmp[0]; //would equate
typename subscript_result<SomeArray<int> >::type somevalue = tmp[0];
喜歡的東西
template<class T>
struct subscript_result
{
typedef boost::result_of<T::operator[](typename T::difference_type)>::type type;
};
?我一直在操作符[]中輸入簽名。 :|
謝謝!
看起來像是BOOST_TYPEOF/_TPL包含引用和cv-qualification作爲結果的一部分可能是有用的。如此接近,該死的。 – Geoff 2010-09-14 14:12:38
@Geoff不能使用type_traits'is_const','is_volatile'和'is_reference'來查找引用和cv-qualification?然後使用它作爲模板特化的一部分來聲明類型爲typedef typename const BOOST_TYPEOF(get_subscript_type(&T :: operator []))type type;或typedef typename BOOST_TYPEOF(get_subscript_type(&T :: operator []) ):: type & type;'? – KitsuneYMG 2010-09-14 15:05:29