为什么使用std::conditional
阻止子结构访问父结构的公共成员?举例来说,以下程序无法编译,并抱怨未定义a
。解决此问题的正确方法是什么?
template <int i>
struct mtmd_A {
static constexpr int a = i;
};
template <int i>
struct mtmd_B {
static constexpr int a = i * i;
};
template <bool select>
struct mtmd: public std::conditional<select, mtmd_A<17>, mtmd_B<17>>::type {
static constexpr int b = a;
};
int main()
{
std::cout << mtmd<true>::b << std::endl;
}
修改
这似乎不是该question的副本,因为仅当我添加std::conditional
时问题才出现。