#include <boost/typeof/typeof.hpp>
struct Test
{
const int& foo();
// const int& foo() const;
};
int main()
{
BOOST_TYPEOF(&Test::foo) ss;
}
Этот код компилируется. После отмены второй функции я получаю ошибку, потому что она не знает, какая функция foo
дано. Как можно передать константную или неконстантную функцию-член здесь?
Проблема отсюда:
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 / non-const.
Задача ещё не решена.