Сбой при компиляции кода, использующего функцию сокета bind() с libcxx

Я использую новую библиотеку libcxx, и у меня есть код, который вызывает функцию сокета bind(). Проблема в том, что когда я набираю с использованием пространства имен std;компилятор выдает мне ошибку для следующего кода:

int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));

Ошибка с использованием clang (сборка svn):

error: no viable conversion from '__bind<int &, sockaddr *, unsigned long>' to 'int'
 int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));

Я думаю, что проблема в том, что использование пространства имен std;переносит функцию std::bind()из заголовка в область видимости (хотя заголовок не включается). Поскольку я использую стороннюю библиотеку, которая использует все пространство имен std, я не могу легко изменить имена классов на полные имена.

Мне интересно, проблема ли это в реализации библиотеки или в C++11 есть какие-то новые правила, которые потенциально могут сломать старый код, использующий bind(). Любые мысли по этому поводу будут оценены.

Спасибо

Roman

12
задан Roman Kutlak 5 April 2012 в 20:10
поделиться