5
在a.hpp
我定義:C++依賴名稱:是否需要此類型名稱?
#include <utility>
namespace Board {
template<int W, int H>
struct GroupNode
{
using PointType = std::pair<int, int>;
// ...
};
}
然後,在b.cpp
我定義:
#include "a.hpp"
namespace Board {
template<int W, int H>
struct NodeList
{
using StdList = std::list < /* typename */ GroupNode<W, H>>;
}
}
// and then use NodeList<19, 19> nl;
上面的代碼可以在兩個GCC-6和鐺-3.9沒有任何警告進行編譯。 但是,Clion 2016.3在b.cpp
中抱怨cannot resolve variable GroupNode
。取消註釋typename
可能會馴服Clion警告,但我想知道是否需要此typename
?如果是這樣,爲什麼g ++/clang ++沒有發出任何警告?