Компилятор VS2010 определить
в gcc я пишу friend class FriendMaker<T>::Type но Visual Studio хочет friend FriendMaker<T>::Type. Поэтому я думаю, что пришло время перейти к конкретному компилятору.
так что мне нужно ifdef на Visual Studio ? На данный момент я использую 2010, но могу переключиться на 2012.
3 ответов
использовать макрос _MSC_VER. Чтобы проверить, является ли компилятор VS2010 или выше:
#if _MSC_VER >= 1600
следующие значения для различных версий VS:
- VS 2003 (VC7.1):
1310 - ПРОТИВ 2005 (ДЛЯ VC8):
1400 - VS 2008 (VC9):
1500 - VS 2010 (VC10):
1600 - VS 2012 (VC11):
1700
просто использовать friend class ... синтаксис для обоих компиляторов. The friend ... синтаксис, без class ключевое слово, на самом деле недействительно; VS2010 неверно, не жалуясь на это.
посмотреть этот вопрос.
Я думаю, вам нужно использовать следующий код для кросс-компилятора:
template <typename T> class B;
template <typename T>
class A
{
friend typename B<T>::V;
};