C++ 带std::conditional的继承

C++ 带std::conditional的继承,c++,c++11,C++,C++11,为什么使用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

为什么使用
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;
}
模板
结构mtmd_A{
静态constexpr int a=i;
};
模板
结构mtmd_B{
静态constexpr int a=i*i;
};
模板
struct mtmd:public std::conditional::type{
静态constexpr int b=a;
};
int main()
{

std::cout
static constexpr int b=mtmd::a;
static constexpr int b=mtmd::a;