0
我正在使用VS2015更新3.以下一段代碼給main()中的行提供intellisense錯誤,但是代碼編譯並運行時沒有錯誤。可能的msvc/intellisense錯誤與可變參數模板參數
#include <iostream>
#include <tuple>
// Template parameter classes
template<class...> struct ComponentList {};
template<class...> struct Filter {};
template<class...> struct FilterList {};
template<typename ATuple, typename BTuple>
class EntityManager;
template<class... A, template<class> class... B>
class EntityManager<ComponentList<A...>, FilterList<B...>>
{
public:
template<class A>
void test()
{
std::cout << typeid(A).name() << std::endl;
}
// Create tuple for each filter inside filterlist
std::tuple<B...> tuples;
};
using MyComponents = ComponentList<int, double, float>;
using FirstFilter = Filter<int, double>;
using SecondFilter = Filter<float>;
using MyFilters = FilterList<FirstFilter, SecondFilter>;
void main()
{
EntityManager<MyComponents, MyFilters> em;
em.test<int>();
}
在main的第一行,intellisense說'不完整的類型是不允許的'。
在第二行中,智能感知給出了三個錯誤:「不完全類型是不允許的」,「類型名稱是不允許的」,以及「預期的表達」
這是在編譯器或智能感知的錯誤?
更改EntityManager的定義使智能感知錯誤消失,所以我想這是Intellisense中的一個錯誤?感謝您的其他改進。我不知道void main()僅被msvc接受,並且在使用typeid之前必須包含。 –
@ M.Bijman - 我不知道Intellisense,所以我不知道它是否是Intellisense中的錯誤;我只知道你的第一個版本是錯誤的 – max66