C++17 typealias устраняет возможность вывода аргументов шаблона класса

Вывод аргумента шаблона класса 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

Живой пример

0 ответов

Другие вопросы по тегам