gcc — c ++ ошибка std :: result_of не называет тип

После g++ -std=c++0x«ИНГ std::result_of выдает следующее сообщение об ошибке

error: ‘result_of’ in namespace ‘std’ does not name a type

(g ++ версия 4.5.0 на SUSE.)

Соответствующий кусок кода, достаточный для воспроизведения ошибки, находится ниже

#include <random>
#include <type_traits>

using namespace std;

class Rnd{
protected:
static default_random_engine generator_;
};

template<class distribution>
class Distr: Rnd{
distribution distribution_;
public:
typename std::result_of<distribution(default_random_engine)>::type
operator() (){ return distribution_(default_random_engine); }
};

Более того, я попытался собрать примеры из Википедии или cpluplus.com безрезультатно.
Это проблема с конкретным компилятором или я делаю что-то не так?

6

Решение

Попробуй включить <functional> также. gcc 4.5 основан на более старой версии C ++ 11, в которой std::result_of определяется в <functional> вместо <type_traits>,

Этот шаг был введен в n3090 (29 марта 2010 г.) после исправления выпуск 1270. GCC 4.5.0 был выпущен только через 16 дней после изменения (14 апреля 2010 г.), который не успел подать заявку, как мы видим из этот онлайн исходный код из <functional>,

std::result_of был перемещен в <type_traits> в gcc 4.6.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]