Компилятор 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;
};