Описание тега template-aliases
1
ответ
Странное поведение is_same_template для псевдонимов шаблона
Следующая программа... #include <iostream> #include <type_traits> template <typename T> struct Template{}; template <typename T> using Alias = Template<T>; template < template <typename> class T1, template <…
06 апр '14 в 09:14
3
ответа
Как псевдонимы шаблона влияют на вывод параметров шаблона?
В C++03 вывод параметров шаблона не происходит в некоторых контекстах. Например: template <typename T> struct B {}; template <typename T> struct A { typedef B<T> type; }; template <typename T> void f(typename A<T>::type…
08 янв '12 в 03:39
1
ответ
Что является формальным в C++ const reference (не ссылка на const, а ссылка на const)
Дано template< class Type > void constref( Type const ) {} void constref_call() { double x; constref<double&>( x ); } // OK template< class Type > using reference = Type&; void foo( reference< const int > const x ) { …
17 мар '15 в 15:05
1
ответ
Частичная привязка шаблона, создание нового шаблона как типа
Есть ли способ частично связать шаблон с типами параметров? Например, у меня есть следующий шаблон: template<typename T, typename Q> struct generic { }; И у меня есть другой шаблон, который принимает класс шаблона в качестве параметра, ожидая,…
05 авг '13 в 12:05
1
ответ
Введите псевдоним / использование объявления для итератора в C++11
У меня проблемы с получением объявления об использовании, которое, как я считаю, должно работать: #include <iostream> #include <vector> using namespace std; template<typename C, typename V> vector<typename C::iterator> find_a…
20 янв '14 в 18:55
1
ответ
Шаблон псевдонима, частичная специализация и недопустимый тип параметра void
Рассмотрим следующий код: template<typename F> struct S; template<typename Ret, typename... Args> struct S<Ret(Args...)> { }; template<typename... Args> using Alias = S<void(Args...)>; int main() { S<void(int)> s;…
08 мар '16 в 22:43
1
ответ
Как эмулировать направляющие вычеты для псевдонимов шаблонов?
Учтите следующее: template <typename T, std::size_t N> struct my_array { T values[N]; }; Мы можем предоставить вычеты для my_array, что-то вроде template <typename ... Ts> my_array (Ts ...) -> my_array<std::common_type_t<Ts...&g…
13 янв '19 в 20:44
2
ответа
Псевдоним шаблона C++11 в качестве аргумента шаблона шаблона приводит к другому типу?
Мы наблюдали странное поведение при компиляции следующего исходного кода: template<template<class> class TT> struct X { }; template<class> struct Y { }; template<class T> using Z = Y<T>; int main() { X<Y> y; X<…
11 окт '13 в 09:04
1
ответ
Псевдонимы шаблона не работают
Я пытаюсь заставить псевдонимы шаблона работать на Clang, но это не работает, хотя справочный лист говорит, что это делает ~~~~>$ cat template_alias.cpp #include <vector> using namespace std; template<typename T> using DoubleVec = vec…
09 окт '11 в 15:02
0
ответов
Псевдоним шаблона как зависимое имя
Как вызвать функцию шаблона на основе зависимого псевдонима шаблона другой функции шаблона? Например, есть класс шаблона и функция шаблона, которая принимает этот класс в качестве аргумента шаблона: template<typename... T> struct FooClass { st…
03 авг '15 в 16:54
2
ответа
Псевдоним шаблона
Согласно http://en.cppreference.com/w/cpp/language/type_alias, псевдонимы являются объявлениями на уровне блоков. В псевдонимах шаблонов ничего особенного не говорится, поэтому следует помнить, что псевдонимы шаблонов также являются объявлениями на …
24 сен '15 в 18:03
1
ответ
Почему я не могу объявить шаблонные псевдонимы типов внутри функций?
Почему я не могу объявить шаблонный псевдоним типа внутри функции? #include <vector> int main(){ //type alias deceleration: template <typename T> using type = std::vector<T>; //type instantiation: type<int> t; } ошибка: объяв…
22 дек '15 в 15:50
1
ответ
Шаблоны псевдонимов C++11 в CUDA
Основной вопрос в том, поддерживаются ли шаблоны псевдонимов компилятором CUDA? Я использую CUDA 7.5 на Ubuntu с gcc-4.8. Все мои классы шаблонов определены в заголовочных файлах и #includeг в одну единицу перевода во время компиляции. У меня просто…
08 окт '15 в 08:21
1
ответ
Вариативные псевдонимы шаблона в качестве аргументов шаблона
Сначала некоторый код, затем некоторый контекст, затем вопрос: template <typename T> using id = T; template <template <typename...> class F, typename... T> using apply1 = F <T...>; template <template <typename...> cl…
27 ноя '13 в 21:32
3
ответа
Ошибка g++ с частичной специализацией шаблонов
Я пишу некоторый TMP-тяжелый код для g++ (версия 4.8.1_1, Macports) и clang++ (версия 3.3, Macports). В то время как g ++ отклоняет следующий листинг кода с UNBRIDLED FURY, clang ++ компилирует его с изяществом и великолепием. Какой компилятор в пра…
17 июл '13 в 12:32
1
ответ
Можно ли использовать мета-функцию type to value в качестве псевдонима переменной в C++14?
Рассматривая предложения псевдонимов мета-функций в C++14 ( TransformationTraits Redux, v2, N3655), я заметил, что не только преобразования типа в тип (например, add_const), введите значение мета-функции (например, is_void) также являются псевдонима…
30 ноя '13 в 06:22
2
ответа
Могу ли я использовать псевдонимы шаблона в качестве параметров шаблона?
Могу ли я использовать псевдонимы шаблона в качестве параметров шаблона? template <template <typename...> class> struct foo {}; template <typename T> using simple_ptr = std::unique_ptr<T>; foo<std::unique_ptr> a; // thi…
06 сен '11 в 12:00
1
ответ
Псевдоним шаблона со значением по умолчанию
Информация Я пытаюсь использовать псевдоним шаблона, чтобы улучшить читабельность моего кода. В идеале я хотел бы, чтобы у псевдонима был аргумент по умолчанию, так что если я опускаю шаблон, он использует значение по умолчанию (именно с шаблонными …
02 июл '13 в 10:19
2
ответа
Можно ли пометить шаблон псевдонима как друга?
Представьте, что у нас есть этот код: template <class, class> class Element {}; template <class T> class Util { public: template <class U> using BeFriend = Element<T, U>; }; Можно ли отметить BeFriend как друг? (Из Utilили лю…
06 ноя '15 в 09:26
1
ответ
Видимость псевдонима шаблона во вложенном классе
Учтите следующее: template<typename X> struct Z {}; struct A { using Z = ::Z<int>; struct B : Z { using C = Z; }; }; Это хорошо компилируется. Ницца. Но теперь добавьте еще один параметр в Z: template<typename X, typename Y> struct…
17 ноя '15 в 00:00