我想要一些简单、轻便的解决方案来解决这种语法:
template <bool is_true>
class A {
B<is_true ? int : float> var; // B is just some other templated class
};
而且我不想要那种东西(虽然,它看起来很正常,我只是希望一切看起来都是需要的,而不是创建一次性结构并声明它们的专业化):
template <bool>
struct HelperClass {
using type = void;
};
template <>
struct HelperClass<true> {
using type = int;
};
template <>
struct HelperClass<false> {
using type = float;
};
// 'HelperClass<is_true>::type' instead of ternary operator
std::conditional
:
template <bool is_true>
class A {
B<std::conditional_t<is_true, int, float>> var;
};