#include <boost/typeof/typeof.hpp>
struct Test
{
const int& foo();
// const int& foo() const;
};
int main()
{
BOOST_TYPEOF(&Test::foo) ss;
}
此代码编译。在解开第二个函数后,我收到错误,因为它不知道给出了哪个函数foo
。如何在这里传递const或nonconst成员函数?
问题出在这里:
template<typename Class, typename T>
struct MemberFuctionHasConstRefReturnType
{
static const bool value = false;
};
template<typename Class, typename T>
struct MemberFuctionHasConstRefReturnType<Class, const T&(Class::*)()const>
{
static const bool value = true;
};
此元函数检查成员函数的返回类型是否为const引用。我不能将const /非const函数传递给它。