Не могли бы вы объяснить, почему это печатает 1
? Не должно BOOST_TYPEOF
возвращение const int
. Как можно проверить, возвращает ли функция const
без использования возможностей C++ 11?BOOST_TYPEOF возвращает int вместо const int
#include <iostream>
#include <boost/typeof/typeof.hpp>
#include <boost/type_traits/is_same.hpp>
const int f_const_int() {return 1;}
int main()
{
typedef BOOST_TYPEOF(f_const_int()) type;
std::cout << (boost::is_same<type, int>::value) << std::endl;
}
Какова причина отказа от квалификации * cv * здесь? – Barry
@Barry Возможно, потому, что cv-квалификаторы prvalues несущественны. Но если нам не нужно иметь дело с ними, то определение информации в [expr] облегчается. – Columbo
Данные, передаваемые 'BOOST_TYPEOF', являются rvalue. Он неназванный, поэтому const или нет, у вас нет возможности изменить его, не присваивая ему значение lvalue, которое должно быть объявлено как const для присвоения, чтобы не жаловаться. – iwolf