Насколько безопасно и законно использовать функции std :: experimental в библиотеке, выпущенной для publi c? - PullRequest
1 голос
/ 01 августа 2020

Предположим, я пишу библиотеку, предназначенную для компиляторов, поддерживающих C ++ 14.

В C ++ 14 несколько стандартных библиотечных средств были введены как экспериментальные, например, optional и filesystem.

Это:

  1. безопасно (для последующих разработчиков)
  2. законно

для меня, чтобы использовать эти функции в моей библиотеке даже если поддерживается только C ++ 14? например, в форме

#if __cplusplus >= 201703L
#include <optional>
namespace mylib {
using std::optional;
using std::nullopt;
}
#else
static_assert(__cplusplus >= 201402L, "C++2014 is required to compile this program");
#include <experimental/optional>
namespace mylib {
using std::experimental::optional;
using std::experimental::nullopt;
}
#endif

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

...