Шаблонная специализация с типом templatized

Видение Microsoft соединения рабочего процесса разработчика/разработчика определенно, кажется, ломается в реальной жизни. У меня есть опыт при работе над довольно крупномасштабным проектом WPF, который включил 2 специализированных ресурса дизайна в течение приблизительно 4 месяцев. Вот некоторые те, что Microsoft, кажется, часто забывает.

  • Разработчики часто предпочитают использовать Mac (разработчики в моей компании - 100% Mac - 0% Windows)
  • , Смешение не работает на Mac (насколько решения VM - разработчикам обычно не нравятся гиковские решения как запуск странных приложений во внешней ОС).
  • Разработчики используют свои инструменты торговли - Photoshop и Illustrator. Период.
  • агрессивность сегодняшних расписаний обычно не предоставляют достаточное количество времени разработчикам для изучения полностью нового приложения / среда проектирования (как Смешение).

Так данное вышеупомянутое, что я заметил, было то, что это создает новый тип задания - или очень обидчивый разработчик или графически просвещенный программист. В основном, кто-то, кто может взять активы дизайна в необработанной форме - обычно .psd или формат иллюстратора и применить их по мере необходимости к процессу приложения.

я оказался тем парнем (графически просвещенный программист). Я провел много времени, экспортировав XAML из файлов Illustrator, очистив их вручную при необходимости, и делая эти активы легко применимыми экранными объектами в Смешении или VS. Были также времена, где я возьму элемент дизайна и перерисую его с помощью смешения (обычно, когда исходный актив был базирующимся битовым массивом, и имело больше смысла преобразовывать его в вектор).

Мое приложение не могло быть типовым - поскольку это была чрезвычайно графически богатая и независимость разрешения, была одна из основных целей, поскольку это должно было выглядеть хорошим на нескольких разрешениях, и соотношения сторон (думайте о трудностях при разработке для ТВ в сегодняшней среде - вещи должны выглядеть хорошими и в низком-res SD и масштабироваться хорошо до HD с высокой разрешающей способностью).

, Таким образом, я думаю, что WPF является потрясающей технологией и абсолютно шагом в правильном направлении для Microsoft. Это однако не конец - все решение самого важного для интеграции разработчика в процессе разработки - если Вы не переопределяете роль разработчика.

9
задан kmhofmann 25 November 2009 в 14:45
поделиться

2 ответа

Частичная специализация допустима только для классов, но не функций.

Обходной путь:

template <typename U, typename V>
class Foo<std::pair<U, V> > { 
public:
 static int bar() { return Foo<U>::bar() + Foo<V>::bar(); }
};

Если вы не хотите полностью специализировать класс, используйте вспомогательную структуру

template<class T>
struct aux {
  static int bar();
};

template <>int aux <int>::bar() { return 4; }
template <>int aux <double>::bar() { return 8; }

template <typename U, typename V>
struct aux <std::pair<U, V> > { 
  static int bar() { return Foo<U>::bar() + Foo<V>::bar(); }
};

template<class T>
class Foo : aux<T> {
  // ... 
};
7
ответ дан 4 December 2019 в 19:34
поделиться

Это совершенно законно в C ++, это частичная специализация шаблона.
Удалите шаблон <> и, если он еще не существует, добавьте явную специализацию шаблона класса, и он должен компилироваться на VS2005 (но не в VC6)

// explicit class template specialization
template <typename U, typename V>
class Foo<std::pair<U, V> >
{
public:
    static int bar();
};

template <typename U, typename V>
int Foo<std::pair<U, V> >::bar() { return Foo<U>::bar() + Foo<V>::bar(); }
5
ответ дан 4 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: