Вывод типа шаблона для массива char - PullRequest
0 голосов
/ 10 января 2019
template<typename T>
class X;

int main() {
    X<decltype("")> x;
}

Почему g ++ выводит T как const char (&)[1], а не просто const char[1]?

1 Ответ

0 голосов
/ 10 января 2019

В отличие от любого другого литерала, являющегося rvalue, строковые литералы являются lvalue. decltype, примененное к выражению lvalue, дает вам ссылку, поэтому const char (&)[1] - правильное поведение.

...