[MSVC] Вопрос про boost
От: XJess  
Дата: 27.05.11 07:45
Оценка:
Привет всем!
Делала один тестовый маленький консольный проектик в MSVC 2008. Там используется класс std::set, а также boost.

Есть там такие строки:

using std::set;
set<int> setInt;
setInt.insert(3);
setInt.insert(4);
setInt.insert(2);
setInt.insert(3);
setInt.insert(7);
setInt.insert(3);
setInt.insert(8);
setInt.insert(9);
//...


Так вот — если включен <set>, то если перейти на объявление set, перехожу на <set> из VC\include\set и все нормально компилируется. Там вижу такое:

// TEMPLATE CLASS set
template<class _Kty,
    class _Pr = less<_Kty>,
    class _Alloc = allocator<_Kty> >
    class set
        : public _Tree<_Tset_traits<_Kty, _Pr, _Alloc, false> >
    {    // ordered red-black tree of key values, unique keys
public:
//..



А если не включать <set>, то программа перестает компилиться и выдается эррор такой:

Error 1 error C2976: 'std::set' : too few template arguments


и указывает на строку set<int> setInt;

А если перейти на объявление set, то перехожу на boost\detail\container_fwd.hpp, где встречаю такое:

// gcc 3.4 and greater
namespace std
{
#if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
    template <class T, class Allocator> class deque;
#endif

    template <class T, class Allocator> class list;
    template <class T, class Allocator> class vector;
    template <class Key, class T, class Compare, class Allocator> class map;
    template <class Key, class T, class Compare, class Allocator>
    class multimap;
    template <class Key, class Compare, class Allocator> class set;
    template <class Key, class Compare, class Allocator> class multiset;

#if !defined(BOOST_CONTAINER_FWD_BAD_BITSET)
    template <size_t N> class bitset;
#endif
    template <class T1, class T2> struct pair;
}



В программу включены такие хэдеры из boost:

#include <boost\lambda\lambda.hpp>
#include <boost\lambda\bind.hpp>
#include <boost\function.hpp>



Так вот — у меня вопрос — почему в boost встречаются эти объявления (зачем они там нужны) и почему они отличаются от тех, что в VS?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.