Я знал, что если мы не поместим пространство после закрытия угловых скобок в объявлении переменной, С++ выдает следующую ошибку.
‘>>’ should be ‘> >’ within a nested template argument list
Но ошибка не возникает, если я использую #define
, как в этом коде. Может кто-нибудь объяснить мне это?
Я думаю, что #define
является просто расширением макроса и работает как find-replace, поэтому оба способа объявления переменной здесь должны быть одинаковыми.
Также эта ошибка не возникает, если я скомпилирую ее с С++ 11.
#include <bits/stdc++.h>
using namespace std;
#define vi vector<int>
int main(){
//Doesn't work, compile error
vector<vector<int>> v;
//Works
vector<vi> vv;
}