Здравствуйте, _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);