首页 > 解决方案 > 有条件地提供 using 声明

问题描述

假设我有一个foo带有模板参数的类T,我想为对应的引用和常量引用类型提供 using 声明T

template<typename T>
struct foo
{
    using reference = T&;
    using const_reference = T const&;
};

只有在没有专门化整个班级的情况下,有没有办法使用声明来“启用Tvoid 这些foo

标签: c++templatesc++17typetraitsenable-if

解决方案


您可以从具有专门化的基类继承void

template<typename T>
struct typedefs {
    using reference = T&;
    using const_reference = T const&;
};

template<>
struct typedefs<void> {};

template<typename T>
struct foo : typedefs<T>
{};

推荐阅读