Вывод параметров шаблона в C++17
От: Evgeny.Panasyuk Россия  
Дата: 28.12.16 20:16
Оценка: 100 (5) +1
Здравствуйте, _NN_, Вы писали:

_NN>Никто не знает планируется ли такая фишка в будущем ?


_NN>
_NN>template<typename T>
_NN>struct A
_NN>{
_NN>  A(T) {}
_NN>};

_NN>A x(1); // Вывод T = int
_NN>


_NN>Может в С++11 можно что-то сделать ?


Насколько я понял уже приняли в черновик C++17 — называется "deduction guides":
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0091r3.html
http://eel.is/c++draft/temp.deduct.guide

Примеры из статьи.
Было:
pair<int, double> p(2, 4.5);
auto t = make_tuple(4, 3, 2.5);
copy_n(vi1, 3, back_inserter(vi2));
// Virtually impossible to pass a lambda to a template class' constructor without declaring the lambda
for_each(vi2.begin(), vi2.end(), Foo<???>([&](int i) { ...}));
lock_guard<std::mutex> lck(foo.mtx);
lock_guard<std::mutex, std::unique_lock<std::mutex>> lck2(foo.mtx, ul); // Notation from N4470
Стало:
pair p(2, 4.5);
tuple t(4, 3, 2.5);
copy_n(vi1, 3, back_insert_iterator(vi2));
for_each(vi.begin(), vi.end(), Foo([&](int i) { ...})); // Now easy instead of virtually impossible
auto lck = lock_guard(foo.mtx);
lock_guard lck2(foo.mtx, ul);



31.12.16 02:03: Ветка выделена из темы [Предложение] Вывод типа шаблона класса из конструктора
Автор: _NN_
Дата: 13.11.12
— Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.