Текущий Стандарт С++ и перспективы его развития
    
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
| Страницы: (81) « Первая ... 69 70 [71] 72 73 ... 80 81 ( Перейти к последнему сообщению ) | 
    Текущий Стандарт С++ и перспективы его развития
    
  | 
         
         
         
          
           Сообщ.
           #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
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата Славян @  Не что угодно, а символ, разрешённый к использованию в идентификаторах. Если это не так, то лексический разбор текста программы будет неуспешным. А почему она может быть не понята, если начало - правильное (символ подчёркивания), а дальше - всё, что угодно? Добавлено Вот тут это расписано более подробно.  |