Псевдоним шаблона со значением по умолчанию

Информация

Я пытаюсь использовать псевдоним шаблона для улучшения читабельности моего кода. В идеале я хотел бы, чтобы у псевдонима был аргумент по умолчанию, так что если я опускаю шаблон, он использует стандартное значение (именно с функциями шаблона и классами шаблона).

Код будет выглядеть так

template<typename T = double>
struct mystruct {};

template<typename T = double> using myalias = mystruct<T>;

int main(void) {

myalias MyStructWithDouble; // causes compilation error
myalias<int> MyStructWithInt;

return 0;
}

Компилятор (в данном случае g ++ 4.7) вполне доволен включением = double в определении псевдонима, но, похоже, игнорировать это.

Я попробовал что-то вроде «специализировать» псевдоним, но компилятор не справился.

Вопрос

Почему компилятор принимает значение по умолчанию в определении, если нам не разрешено его использовать? Во-вторых, есть ли способ добиться этого?

мотивация

Этот пример очень прост, но в моем реальном коде псевдоним сэкономит много времени на печать (имеется более одного параметра шаблона)

4

Решение

Как и в случае с шаблонами классов, вам все равно нужно предоставить пустой список аргументов шаблона:

myalias<> MyStructWithDouble; // compiles
9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]