Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.83.150] |
|
Страницы: (77) « Первая ... 69 70 [71] 72 73 ... 76 77 ( Перейти к последнему сообщению ) |
Сообщ.
#1051
,
|
|
|
|
Сообщ.
#1052
,
|
|
|
{ auto; } ? |
Сообщ.
#1053
,
|
|
|
Для красоты упустили return?
|
Сообщ.
#1054
,
|
|
|
про return компилятор тоже узнает
|
Сообщ.
#1055
,
|
|
|
Цитата D_KEY @ { auto; } ? Т.е. не смущает, что auto не является контекстно-зависимым ключевым словом, потому им нельзя именовать сущности, да и шаблонными с помощью auto можно делать только лямбды? |
Сообщ.
#1056
,
|
|
|
А нужно было перечислить все? Мне показалось наиболее интересной auto в качестве тела функции.
|
Сообщ.
#1057
,
|
|
|
Ну вы блин даёте - это же функция вычисления факториала, сразу видно!
|
Сообщ.
#1058
,
|
|
|
А в пятой ветке gcc... типобезопасный printf ждёт своего создателя
Добавлено Хотя нет, не ждёт - невозможно Грабли с функцией только времени компиляции всё ещё с нами. |
Сообщ.
#1059
,
|
|
|
Цитата MyNameIsIgor @ Грабли с функцией только времени компиляции всё ещё с нами. Нууу... Питер Соммерленд опять выносит мозг compile-time вычислениями на C++14. Скрытый текст Призаюсь честно: когда слушал его вживую, к концу доклада мозг слегка закипел.... |
Сообщ.
#1060
,
|
|
|
Цитата Flex Ferrum @ Цитата MyNameIsIgor @ Грабли с функцией только времени компиляции всё ещё с нами. Нууу... Питер Соммерленд опять выносит мозг compile-time вычислениями на C++14. Скрытый текст Призаюсь честно: когда слушал его вживую, к концу доклада мозг слегка закипел.... Да это всё понятно... Но я всё ещё не могу остановить компиляцию, если спецификатор в формате не совпадает с выводимым типом! А всё потому, что внутри функции неизвестно является ли контекст константным. Это было бы известно, разреши они constexpr параметры... Добавлено Т.е. я о чём. Вот в коде #include <iostream> constexpr int foo(int i) { return i; } int main() { constexpr int i = foo(1); int j; std::cin >> j; int k = foo(j); } нельзя сделать объявить k с модификатором constepr, потому что вызов foo не является constant expression context. И если написать printf template<class... Args> void printf(const char* format, Args&&... args) { size_t count = formats_count(format); // не может быть constexpr, т.к. format не является constexpr static_assert(count == sizeof...(Args)); // ошибка, т.к. count не constexpr } А ведь прекрасно всё могло бы быть, если бы я мог написать template<class... Args> void printf(constexpr const char* format, Args&&... args) |
Сообщ.
#1061
,
|
|
|
Цитата MyNameIsIgor @ А ведь прекрасно всё могло бы быть, если бы я мог написать Ну да. Соммерленд в своей презе как раз жаловался на то, что аргументы constexpr-функций нельзя лифтить в параметры шаблона... |
Сообщ.
#1062
,
|
|
|
Подскажите в двух словах, что тут такого неправильного:
#define _ПробаПера 24 [bcc64 Warning] Unit_1.cpp(301): ISO C99 requires whitespace after the macro name Добавлено Видимо, всё же русскими буквами в C99 нельзя, раз он на латиницу перестал ругаться. Эх... |
Сообщ.
#1063
,
|
|
|
Использование в программе символов за пределами базового символьного набора не запрещается, они входят в расширенный символьный набор, просто его состав implementation defined. Проблема может возникнуть из-за несовместимого с реализацией представления таких символов в исходном коде. Например кириллица в ANSI1251 не будет понята gcc, потому что он использует UTF-8.
Добавлено В проблема запросто может относиться к _ в начале имени. Такие имена зарезервированы для использования реализациями в составе библиотек и не должны использоваться в программах. |
Сообщ.
#1064
,
|
|
|
Цитата Qraizer @ А почему она может быть не понята, если начало - правильное (символ подчёркивания), а дальше - всё, что угодно? Не важно же, что там - кириллица или музыкальные нотки, или китайские иероглифы или ещё что-то! Непонятно. Например кириллица в ANSI1251 не будет понята gcc, потому что он использует UTF-8. Добавлено Цитата Qraizer @ Здесь явно не это, т.к. при замене на _RRTT всё перестало ругаться. проблема запросто может относиться к _ в начале имени. Такие имена зарезервированы для использования реализациями в составе библиотек и не должны использоваться в программах. Добавлено Цитата Славян @ А, понял! Видимо, всё же важно, ибо вот такое, скажем, будет запрещено: Не важно же, что там - кириллица или музыкальные нотки, или китайские иероглифы или ещё что-то! #define _test[ 24 |
Сообщ.
#1065
,
|
|
|
Цитата Славян @ Не что угодно, а символ, разрешённый к использованию в идентификаторах. Если это не так, то лексический разбор текста программы будет неуспешным. А почему она может быть не понята, если начало - правильное (символ подчёркивания), а дальше - всё, что угодно? Добавлено Вот тут это расписано более подробно. |