C++17 шаблонный конструктор класса удержания шаблона

Вопрос тесно связан с недавно реализованным выводом шаблона класса C++17 из параметров конструктора.

На самом деле это то, что я пытаюсь сделать:

template<typename H, typename B>
struct A {
    typedef H value_type;

    template<typename I>
    A(B b, I i) {
        std::cout << i << b << std::endl;
    }

    operator int() {
        return 5;
    }
};

int main() {
    int a = A<float>(1, "Hello!");
    return 0;
}

И я получаю:

error: too few template arguments for class template 'A' 
int a = A<float>(1, "Hello!");

На самом деле гарантируется, что первый параметр шаблона всегда особенно специализирован, и проблема заключается в том, чтобы заставить компилятор (clang-1000.11.45.5 или clang 7.0 от Apple) выводить параметр шаблона второго класса B,

Интересно узнать, что мне не хватает.

Полный пример доступен на Wandbox: https://wandbox.org/permlink/1Vh3LxMmdI6ZILEU

0 ответов

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