C ++ 14, похоже, грядет, и компиляторы уже пытаются реализовать основные функции этой новой версии. Я смотрел на Поддержка GCC для этих основных функций и заметил кое-что о части двоичных литералов: GCC реализует их, но, кажется, делает разницу между двоичными литералами GNU и двоичными литералами C ++ 14. Вот соответствующие ссылки для обоих:
Я попытался найти некоторые различия между ними, так как GCC, кажется, имеет значение, но ничего не смог найти. Кто-нибудь из вас знает больше о возможных несовместимостях?
От совершить разницу который ввел поддержку в gcc 4.9, единственное отличие состоит в том, что gcc теперь принимает двоичные литералы как языковую особенность C ++ 1y и не предупреждает, что они являются расширением gcc, если указана поддержка C ++ 1y. Там нет изменений в фактической реализации.
Ранее:
warning : binary constants are a GCC extension
Теперь, если -std=c++1y
указано:
warning : binary constants are a C..1y feature or GCC extension
Я предполагаю, что разница в том, что одно является расширением, тогда люди не будут слишком склонны использовать его, в то время как другое соответствует стандарту и доступно без включения расширений. Это формальность.
Первый документ, на который вы указываете, — это реализация GNU двоичных литералов как расширения языка C (т. Е. Это нестандартная функция C, и этот документ определяет, как gcc реализует расширение для языка).
Второй документ, на который вы указываете, это предложение добавить двоичные литералы в язык C ++ 11, но, насколько я знаю, он также не был принят (*), и это означает, что он также не является частью стандартного C ++, он остается расширение языка, предоставляемое gcc.
Насколько я вижу, эта функция будет непереносимой между компиляторами, но вы можете определить свою собственную реализацию двоичного литерала в C ++ 11, используя пользовательские литералы.
(*) s / не принято / Я не могу найти никаких ссылок на двоичные литералы в N3485 «Рабочий проект, стандарт для языка программирования C ++», но это может быть функция, принятая для следующего стандарта C ++.