Создание ctrl+tab привязки клавиш в PuTTY

Первый объявляет шаблон struct с именем Example, принимая любое количество типов:

template<typename... S>
struct Example /* <S...> */ ;

Если за именем вновь объявленного шаблона следует <>, с или без аргументов это будет специализация!

Вторая определяет частичную специализацию хотя бы для одного аргумента типа:

template<typename H, typename... T>
struct Example<H, T...>
{
    static const size_t value = sizeof(H) + Example<T...>::value;
};

И последняя определяет полную специализацию для типа нет -arguments:

template<>
struct Example<>
{
    static const size_t value = 0;
};

Обратите внимание, что за template следуют пустые <> -кобки.

Неважно, что частичная специализация определена до полной специализации, потому что создание экземпляров должно быть отложено до тех пор, пока не будут известны аргументы типа шаблонов.

Конкретный экземпляр, который вы используете, Example<long,int,char>::value, зависит от Example<int, char>::value, который зависит от Example<char>, что приводит к базовому случаю:

Example<long, int, char>::value = sizeof(long) + Example<int, char>::value; // sizeof(long) + sizeof(int) + 1 + 0
Example<int, char>::value = sizeof(int) + Example<char>::value; // sizeof(int) + 1 + 0
Example<char>::value = sizeof(char) + Example<>::value; // 1 + 0
Example<>::value = 0;

Конечно, пример может быть Упрощенно:

template <class... T>
struct Example {
    static const size_t value = 0;
    static_assert(!sizeof...(T), "The base-template only handles no template arguments.");
};
template <class H, class... T>
struct Example {
    static const size_t value = sizeof(H) + Example<T...>::example;
};

Или с C ++ 17 выражениями фолда:

template <class... T>
struct Example {
    static const size_t value = 0 + ... + sizeof(T);
};

В дополнение, есть веские причины никогда не использовать using namespace std;, интересно, почему вы [ 1115], и return 0; является избыточным для main().

18
задан Danny 26 April 2009 в 08:11
поделиться

2 ответа

PuTTY ничего не отправляет, когда вы нажимаете Ctrl + Tab .

Вы можете установить PuTTY, как описано здесь: Используя Ctrl + Tab в GNU Screen через PuTTY

8
ответ дан 30 November 2019 в 09:35
поделиться

Я считаю, что в настоящее время с помощью Ctrl + Tab невозможно с PuTTY, потому что PuTTY не позволяет вам настраивать определенные переводы для ключей. Вот достойная статья, которая показывает, как бы вы это настроили, если бы PuTTY поддерживал эту функцию:

http://www.staldal.nu/tech/2009/01/10/how-to-use-ctrl-tab -in-gnu-screen /

Если вы используете (или рассматриваете возможность использования) горячую клавишу / макрос-программу, такую ​​как Autohotkey, вы можете эмулировать это поведение самостоятельно. Например, этот скрипт конфигурации Autohotkey будет делать именно то, что вы хотите:

#IfWinActive PuTTY
^Tab::Send :tabnext
^+Tab::Send :tabprev
#IfWinActive

(Обратите внимание, что в этом примере просто ищется любой заголовок окна, начинающийся с PuTTY, поэтому вам придется настраивать его в зависимости от конфигурации заголовка.)

1
ответ дан 30 November 2019 в 09:35
поделиться
Другие вопросы по тегам:

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