使用std :: conditional继承

时间:2019-04-04 03:10:58

标签: 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 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时问题才出现。

0 个答案:

没有答案