C++ 0x - экспорт, который уводят, спецификации исключения удержаны от использования. Это будет влиять на Ваш код? [закрытый]

28
задан 3 revs, 3 users 100%anon 5 August 2012 в 00:26
поделиться

6 ответов

Я полагаю, что любой компилятор, который поддерживает их сейчас, будет продолжать поддерживать их в обозримом будущем как необязательные расширения, чтобы люди могли компилировать свой существующий код.

0
ответ дан 28 November 2019 в 03:47
поделиться

Определенно ни одной бессонной ночи ни на одной из кодовых баз, с которыми я работал за последние 5-6 лет. Я не думаю, что когда-либо встречал кого-нибудь, кто использовал бы export , плюс такие эксперты, как Херб Саттер, так долго выступали против спецификаций исключений (кроме nothrow), что большинство программистов уже поняли это сообщение.

5
ответ дан 28 November 2019 в 03:47
поделиться

Я, конечно, не пролью слезу по поводу спецификации исключений. ("Хорошая идея, которая, к сожалению, не сработала.") Все, на что они когда-либо были годны, это то, что сейчас обозначает noexcept.

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

namespace detail { // actually we don't want this public, but can't avoid it
  template<typename T>
  void f_helper() { /*---*/ }
}

template<typename T>
void f() {detail::f_helper();}

void g() {f<int>();} // has to recompile if f_helper()'s implementation changes

Увы, поскольку только один из компиляторов, которыми мне приходилось пользоваться в последнее десятилетие, реализовал это, я так и не смог его использовать.

3
ответ дан 28 November 2019 в 03:47
поделиться

экспорт никогда не был реализован должным образом в gcc или MSVC (но, по-видимому, так было в EDG / Comeau, как говорится в комментариях), но я бы думаю, он так и не получил широкого признания. (Но я в основном живу в мире gcc / msvc, поэтому моя точка зрения не охватывает все сообщество C ++.)

Что касается спецификаций исключений, я считаю, что они тоже были нарушены.

В-третьих, отказ от поддержки не означает, что компилятор будет вызывать ошибки. Просто настоятельно рекомендуется, чтобы пользователь не использовал его и, если это применимо (не так много, я думаю), перейти к другим механизмам для достижения той же цели.

4
ответ дан 28 November 2019 в 03:47
поделиться

Я думаю, что оба приема хороши и ни один из них не причинит мне боли, и мне нравится разъяснение намерений в отношении noexcept .

1
ответ дан 28 November 2019 в 03:47
поделиться

Я программировал на C ++ начиная с cfront 1.0, и я рад сообщить, что никогда не писал спецификации исключений и не допускал их в коде, который я был ответственным за. Когда им сделали предложение, я позвонил Бьярну Страуструпу по телефону и крикнул: «Не делай этого!» Я назвал все причины, по которым это была ужасная идея. К моему удивлению, он сказал что-то вроде: «Я знаю». Когда я спросил, почему особенность Hades была включена в спецификацию, он сказал, что есть крупный игрок, чьи «эксперты» решительно настаивали на том, чтобы она была включена в спецификацию, иначе они абсолютно не подпишут, точка, конец обсуждения . Если бы я когда-либо знал, кто это, я забыл.

Я уже давно отказываюсь от поддержки. : -)

14
ответ дан 28 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

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