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