【问题标题】:Define function outside template class that uses SFINAE?在使用 SFINAE 的模板类之外定义函数?
【发布时间】:2020-08-09 11:51:16
【问题描述】:

在下面的示例中,我想在这种情况下在类之外定义析构函数,到目前为止我尝试的万亿语法都不起作用:

    template<typename OjectType,
        typename = std::enable_if_t<std::is_base_of_v<SomeClass, OjectType>>>
    class SampleClass
    {
    public:
        ~SampleClass();
    };

    // How to define this outside class?
    template<typename ObjectType>
    SampleClass<ObjectType>::~SampleClass()
    {
    }

【问题讨论】:

    标签: c++ templates sfinae


    【解决方案1】:

    你很接近,你忘了指定第二个模板参数(没有默认值):

    template <typename ObjectType, typename Dummy>
    SampleClass<ObjectType, Dummy>::~SampleClass()
    {
        // ...
    }
    

    【讨论】:

    • 啊,很好,即使是 VS 中的重构菜单也给了我错误的语法,我已经迷路了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多