Для Вашего развлечения только (знающий Вас все парни C#;-).
я думаю, что это произошло в Smalltalk, где это было вокруг много лет. Это определяется там как:
в Объекте:
? anArgument
^ self
в UndefinedObject (иначе класс ноля):
? anArgument
^ anArgument
Там и оценивают (?) и не оценивают версии (??) из этого.
Это часто находится в методах получателя для лениво инициализированного, частного (экземпляр) переменные, которым оставляют ноль, пока действительно не необходимый.
Установить Boost на вашу машину.
Добавьте следующий каталог к пути поиска.
<Каталог установки Boost> / boost / tr1 / tr1
см. Здесь boost tr1 для подробностей
Теперь, когда вы включаете
Возможно, лучшим способом на данный момент было бы просто использовать библиотеки boost , поскольку во многих случаях у них есть альтернативы с интерфейсом, аналогичным функциям TR1, и они просто находятся в другой (но согласованный) путь к заголовку и пространство имен. Это дает преимущество работы с компиляторами, которые даже не начали реализацию C ++ 0x. И есть множество полезных библиотек ускорения, которых нет в TR1 вообще :)
В качестве альтернативы, в G ++ вы можете попробовать передать --std = gnu ++ 0x в командной строке. Это работает, по крайней мере, для
namespace std { namespace tr1 { using namespace std; } }
Это, естественно, зло. Вместо этого я настоятельно рекомендую использовать ускоренный подход :)
Возможно, немного взломано, но вы могли бы просто добавить каталог компилятора tr1 в свой путь включения.
В Windows добавьте каталог tr1 к системному пути. Тогда #include
должно работать.
Я спросил себя тот же вопрос. К сожалению, в техническом отчете не указано, как должны быть включены заголовки. Он только определяет, что расширения должны находиться в пространстве имен :: std :: tr1.
#ifdef _WIN32
#include <unordered_map>
#include <memory>
#else
#include <tr1/unordered_map>
#include <trl/memory>
#endif