C ++ 17 typealias消除了类模板参数推导的能力

时间:2018-08-24 07:58:54

标签: c++ c++17

C ++ 17类模板参数推论工作得很好,但是我无法创建 这种类型的类型别名,可以在其中使用类模板参数推导。

使用需要的东西有什么特别的调整吗?

这里有一个最小的工作示例:

#include <utility> 

template <typename T>
class cls {
   public:
    cls(T&& arg) : val(std::forward<T>(arg)) {}
   private:
    T val;
};

template <typename T>
using alias = cls<T>;

int main() {
    cls c(1);
    //alias b(2); //not working, but why?
    alias<int> a(2);
}

此代码应使用g ++ 8和--std = c ++ 17编译,但是如果我取消注释行,则会出现以下错误:

test.cpp:16:11: error: missing template arguments before ‘b’
     alias b(2);//not working

Live example

0 个答案:

没有答案