Авто & амп; от const ref getter: скопирует ли он? [Дубликат]

Чтобы скопировать текст с помощью многоточия, когда он переполняет ячейку таблицы, вам нужно будет установить свойство CSS max-width для каждого класса td для работы переполнения. Никаких дополнительных div div не требуется

td {
    max-width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

Для гибких макетов; используйте свойство CSS max-width для определения эффективной минимальной ширины столбца или просто используйте max-width: 0; для неограниченной гибкости. Кроме того, содержащая таблица будет иметь определенную ширину, обычно width: 100%;, а столбцы обычно будут иметь свою ширину, заданную как процент от общей ширины

table {
    width: 100%;
}
td {
    max-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
td.columnA {
    width: 30%;
}
td.columnB {
    width: 70%;
}

Исторический: для IE 9 (или меньше) вам нужно иметь это в своем HTML, чтобы исправить IE-специфическую проблему рендеринга

<!--[if IE]>
<style>
    table {
        table-layout: fixed;
        width: 100px;
    }
</style>
<![endif]-->
63
задан Nate Kohl 11 May 2012 в 02:02
поделиться

1 ответ

Прочитать эту статью: Появление и исчезновение констант в C ++


Вывод типов для автоматических переменных в C ++ 0x по существу такой же, как для шаблона параметры. (Насколько мне известно, единственное различие между ними состоит в том, что тип автоматических переменных можно выводить из списков инициализаторов, в то время как типы параметров шаблона могут не быть.) Каждая из следующих деклараций поэтому объявляет переменные типа int ( never const int):

auto a1 = i;
auto a2 = ci;
auto a3 = *pci;
auto a4 = pcs->i;

При выводе типа для параметров шаблона и автоматических переменных удаляются только константы верхнего уровня. Если шаблон функции принимает указатель или ссылочный параметр, сохраняется константа того, что указана или упоминается:

template<typename T>
void f(T& p);

int i;
const int ci = 0;
const int *pci = &i;

f(i);               // as before, calls f<int>, i.e., T is int
f(ci);              // now calls f<const int>, i.e., T is const int
f(*pci);            // also calls f<const int>, i.e., T is const int

Это поведение - это старые новости, применяемые так, как это делается как на C ++ 98, так и на C ++ 03. Соответствующее поведение для автоматических переменных, конечно, новое для C ++ 0x:

auto& a1 = i;       // a1 is of type int&
auto& a2 = ci;      // a2 is of type const int&
auto& a3 = *pci;    // a3 is also of type const int&
auto& a4 = pcs->i;  // a4 is of type const int&, too

Поскольку вы можете сохранить cv-квалификатор, если тип является ссылкой или указатель, вы можете сделать:

auto& my_foo2 = GetFoo();

Вместо того, чтобы указывать его как const (то же, что и для volatile).

Изменить: Что касается причины auto выводит возвращаемый тип GetFoo() как значение вместо ссылки (что было вашим основным вопросом, извините), рассмотрите это:

const Foo my_foo = GetFoo();

Вышеупомянутое создаст копию, так как my_foo ценность. Если auto должен был вернуть ссылку на lvalue, это было бы невозможно.

52
ответ дан someguy 22 August 2018 в 01:38
поделиться
  • 1
    Вы не объяснили, почему ref-qualifier также удаляется. – Lightness Races in Orbit 21 August 2011 в 15:03
  • 2
    @Tomalak Geret'kal: Вы имеете в виду, почему они решили это сделать? Это имеет смысл, не так ли? Рассмотрим это: Foo my_foo = GetFoo(); и что GetFoo() не вернул тип const. Это будет то же самое, что: auto my_foo = GetFoo();. Если авто также включало ссылку, вы не смогли бы выполнить вышеупомянутое. – someguy 21 August 2011 в 15:15
  • 3
    Не говори мне; положите его в свой ответ. – Lightness Races in Orbit 21 August 2011 в 15:28
  • 4
    @Tomalak Geret'kal: Правильно ...: P – someguy 21 August 2011 в 15:28
  • 5
    Рабочая ссылка на статью aristeia.com/Papers/appearing%20and%20disappearing%20consts.pdf – kaihowl 14 May 2014 в 14:34
Другие вопросы по тегам:

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