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

Как это возможно? Я хочу, чтобы включить передачу аргументов во время компиляции. Предположим, что это только для удобства пользователя, так как всегда можно было вывести реальный тип с помощью 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(); } 

3 Solutions collect form web for “Можно ли эмулировать шаблон ?”

После вашего обновления: нет. В 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); 
  • Каковы различия между Generics в C # и Java ... и шаблонами в C ++?
  • C ++ шаблоны Turing-complete?
  • Как работает эта функция шаблона «размер массива»?
  • объявлять функцию шаблона шаблона classа шаблона
  • c ++ -
  • Код рефакторинга, чтобы избежать
  • Разница между экземпляром и специализацией в шаблонах c ++
  • Определить, является ли тип указателем в функции шаблона
  • Примеры C ++ SFINAE?
  • Почему Синглтон считается анти-шаблоном?
  • использование имени classа в шаблоне classа без параметров шаблона
  • Interesting Posts

    Проблемы с конверсией Delphi Unicode

    Имена файлов в ручном накопителе превратились в текст тарабарщины

    Шифрование видеофайлов?

    Как выбрать «последний ребенок» с определенным именем classа в CSS?

    структура расширенной реальности

    Определите, поддерживает ли SSD SATA 6 Гбит / с

    Отображение сервлета Джерси / * вызывает ошибку 404 для статических ресурсов

    Установите базовый url для угловых 2 запросов HTTP

    Как получить Bitmap от Uri?

    Каковы инструменты для создания SDK для Android, инструменты для платформы и инструменты? И какую версию следует использовать?

    Перечисление через свойства объекта (строка) в C #

    Xamarin Forms Android App Crashes запускает отладочную версию с помощью эмулятора VS Android

    Угловой UI-маршрутизатор Вложенное разрешение штата в дочерних штатах

    Android API для Google Диска?

    Запрос данных об общих данных данных с помощью SPARQL

    Давайте будем гением компьютера.