Можно ли эмулировать шаблон ?

Как это возможно? Я хочу, чтобы включить передачу аргументов во время компиляции. Предположим, что это только для удобства пользователя, так как всегда можно было вывести реальный тип с помощью template , но для некоторых типов, то есть от указателей к элементам-функциям, довольно утомительно, даже с decltype в качестве ярлыка. Рассмотрим следующий код:

 struct Foo{ template void bar(){ // do something with X, compile-time passed } }; struct Baz{ void bang(){ } }; int main(){ Foo f; f.bar(); f.bar(); } 

Можно ли каким-то образом преобразовать его в следующее?

 struct Foo{ template void bar(){ // do something with X, compile-time passed } }; struct Baz{ void bang(){ } }; int main(){ Foo f; f.bar(); f.bar(); } 

После вашего обновления: нет. В C ++ таких функций нет. Ближайшие macros:

 #define AUTO_ARG(x) decltype(x), x f.bar(); f.bar(); 

Похоже, что вы хотите генератор:

 template  struct foo { foo(const T&) {} // do whatever }; template  foo make_foo(const T& x) { return foo(x); } 

Теперь вместо написания:

 foo(5); 

Ты можешь сделать:

 make_foo(5); 

Вывести аргумент.

Он был добавлен в C ++ 17 Теперь вы можете написать

 template struct B { /* ... */ }; B<5> b1; // OK: non-type template parameter type is int B<'a'> b2; // OK: non-type template parameter type is char 

См. http://en.cppreference.com/w/cpp/language/template_parameters , пункт 4 раздела параметров шаблона непигового типа

Это невозможно. Единственный способ добиться – передать аргумент функции :

 struct Foo{ template void bar(T& X) {} }; 

А затем вызовите функцию как,

 f.bar(5); f.bar(&Baz::bang); 
  • Как передать функцию шаблона в списке аргументов шаблона
  • Синглтоны: хороший дизайн или костыль?
  • Может ли область переменной Jinja расширяться во внутреннем блоке?
  • В шаблоном производном classе, почему мне нужно квалифицировать имена членов базового classа с помощью «this->» внутри функции-члена?
  • Вычисление шаблона для функции на основе возвращаемого типа?
  • Метапрограммирование: отказ определения функции Определяет отдельную функцию
  • Почему мне приходится обращаться к членам базового classа шаблонов через этот указатель?
  • Как отключить цвет фона в TextBox в WPF
  • Шаблоны: функция шаблона не очень хорошо работает с функцией члена шаблона classа
  • Что такое Mixins (как концепция)
  • Как убедиться, что параметр шаблона является подтипом требуемого типа?
  • Давайте будем гением компьютера.