是否可以创建一种std :: enable_if_and_else,如std :: conditional,但没有未定义的类的编译时错误。
以下是一个例子:
static constexpr bool myExpr = true;
struct A {};
struct B;
struct C :
std::conditional<myExpr,
A,
B>::type
{}; // Compilation error: B is declared but not defined
struct D :
enable_if_else<myExpr,
A,
B>::type
{}; // It works
由于
答案 0 :(得分:4)
是否可以创建一种std :: enable_if_and_else,如std :: conditional,但没有未定义的类的编译时错误。
std::conditional<true, A, B>::type
如果B
不完整,则不应该出现任何错误,因为您没有以要求完整的方式使用B
。< / p>
所以std::conditional
已经是您正在寻找的。 p>