Lim*_*eng 3 c++ c++17 if-constexpr
我试图使用if-constexpr检查一些东西,但我遇到了类似的错误
预期'('之前'constexpr'
没有先前'if'的'else'
到目前为止,我检查我的代码没有任何问题
我的编译标志是g ++ -std = c ++ 17 main.cpp
#include <iostream>
template<typename T, typename Comp = std::less<T> >
struct Facility
{
template<T ... list>
struct List
{
static void print()
{
std::cout<<"\""<<"Empty List"<<"\""<<"\n";
}
};
template<T head,T ... list>
struct List<head,list...>
{
static void print()
{
std::cout<<"\"" << head;
((std::cout << " " << list), ...);
std::cout<<"\""<<"\n";
}
};
template<unsigned N,typename AA>
struct RemoveFirst{};
template<unsigned N,T head,T ... Rest>
struct RemoveFirst<N,List<head,Rest...>>
{
struct result
{
static void print()
{
if constexpr (N == head)
{
std::cout<<"";
}
else
{
std::cout<<"\""<<head;
((std::cout << " " << Rest), ...);
std::cout<<"\""<<"\n";
}
}
};
};
};
template<int ... intlist>
using IntList = typename Facility<int>::List<intlist...>;
int main()
{
using IntFacility = Facility<int>;
using List = IntList<2, 8, 2, 3, 5, 10, 8, 5>;
}
Run Code Online (Sandbox Code Playgroud)
较旧版本的GCC(最高6.x)不支持最终版本的C++ 17会产生该错误,因为它们识别constexpr为关键字但不理解constexpr-if构造.确保您的GCC是版本7或更高版本.
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |