2013-07-19 2 views
0

У нас есть некоторый код, написанный с TR1 и т.д .:Могу ли я использовать C++ TR1 в VS2010?

#include <tr1/functional> 
... 
typedef std::tr1::function<void(int)> MyFunction; 
.. 

Он отлично работает при компиляции с GCC, но не с VS2010.

Наш код имеет compatibility issue with C++11, поэтому, боюсь, я не могу просто переключиться на C++ 11. Я также не хочу вводить импульс в наш код.

Есть ли какой-либо пакет или что-то, что я должен скачать для VS2010, чтобы он поддерживал TR1?

ответ

3

VS 2010 поддерживает TR1 из коробки. Вам не нужно tr1/ в начале имени файла, если вы его включите.

#include <functional> 

typedef std::tr1::function<void(int)> MyFunction; 

Обратите внимание, что TR1 не указать имя файла для заголовков, так далеко, как в соответствии с TR1 идет, либо один примерно такой же, как и другие.

3

Вы можете непосредственно использовать <functional> в VS 2010. Так было бы

#include <functional> 
... 
typedef std::function<void(int)> MyFunction; 
.. 

VS 2010 переехал, что было ранее в std::tr1 в обычное std пространство имен, но VS 2008 все еще использует std::tr1. Тем не менее, вы все равно должны использовать явное пространство имен tr1, если вам это нужно I.e.

#include <functional> 
... 
typedef std::tr1::function<void(int)> MyFunction; 
.. 

действует также (обратите внимание, что файл заголовка включен не tr1/).

Соответствующие ссылки:

What are differences between std, tr1 and boost (as namespaces and/or libraries)?

Why does VS2010 maintain the std::tr1 namespace?

+0

Спасибо. К сожалению, я не могу принять два ответа. – Deqing

Смежные вопросы