2015-04-21 4 views
-1

У меня есть на структуруШаблон вывод аргумента для VARIADIC полукокса список

template<char...> struct foo {}; 

и VARIADIC функцию

template<char... chars> auto make_foo(char...) { 
    return foo<chars...>(); 
} 

Однако у меня возникают проблемы с поиском правильного синтаксиса, чтобы получить символы, выведенные автоматически. Как написано, лязг дает мне

decltype(make_foo('a','b','c')) == foo<> 

Вместо этого, я хотел бы иметь

decltype(make_foo('a','b','c')) == foo<'a','b','c'> 
+0

Ум, объясняющий нижний предел? – Benno

+4

Для записи 'auto make_foo (char ...)' такой же, как 'auto make_foo (char, ...)'. Это другой тип многоточия, чем тот, который участвует в вариационных пакетах. –

+0

Бенно, я не спустил вниз. Но ваш вопрос читается как тот, кто едва понимает функции шаблонов, пытаясь использовать параметризованные типы с параметрическими значениями: поскольку они новы для языка, есть предположение, что они продвинуты, и ваше понимание понимания базового кода функции шаблона может быть принято как теряя время читателей. Представьте, что кто-то не может «приветствовать мир», спрашивая о многопоточном коде обработки изображений, где проблема заключается в том, что они называли свою главную функцию «errcode MAIN (parameters)». – Yakk

ответ

1

Что это сводится к тому, что вы не можете иметь такую ​​make_fooфункцию потому, что параметры все значения времени выполнения, которые не могут быть преобразованы в значения времени компиляции .

Однако, вы можете просто использовать макрос.

#define make_foo(...) foo<__VA_ARGS__>{} 
Смежные вопросы