Ошибка встроенной функции в загруженном исходном коде libpqxx

#c #visual-studio-2017 #libpqxx

#c #visual-studio-2017 #libpqxx

Вопрос:

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

E0325 inline specifier allowed on function declarations only и сообщение об ошибке C2440 «const_Elem» не может быть преобразовано в «std::string»

и после открытия файла conversations.hxx, в котором содержится ошибка встроенного спецификатора, он добавляет больше ошибок, поскольку constexpr здесь недопустим.

 struct nullness<T, std::enable_if_t<std::is_arithmetic_v<T>>> : no_null<T>
{};


template<> struct string_traits<short> : internal::integral_traits<short>
{};
template<> inline constexpr bool is_unquoted_safe<short>{true};
template<>
struct string_traits<unsigned short>
        : internal::integral_traits<unsigned short>
{};
template<> inline constexpr bool is_unquoted_safe<unsigned short>{true};
template<> struct string_traits<int> : internal::integral_traits<int>
{};
template<> inline constexpr bool is_unquoted_safe<int>{true};
template<> struct string_traits<unsigned> : internal::integral_traits<unsigned>
{};
template<> inline constexpr bool is_unquoted_safe<unsigned>{true};
template<> struct string_traits<long> : internal::integral_traits<long>
{};
template<> inline constexpr bool is_unquoted_safe<long>{true};
template<>
struct string_traits<unsigned long> : internal::integral_traits<unsigned long>
{};
template<> inline constexpr bool is_unquoted_safe<unsigned long>{true};
template<>
struct string_traits<long long> : internal::integral_traits<long long>
{};
template<> inline constexpr bool is_unquoted_safe<long long>{true};
template<>
struct string_traits<unsigned long long>
        : internal::integral_traits<unsigned long long>
{};
template<> inline constexpr bool is_unquoted_safe<unsigned long long>{true};
template<> struct string_traits<float> : internal::float_traits<float>
{};
template<> inline constexpr bool is_unquoted_safe<float>{true};
template<> struct string_traits<double> : internal::float_traits<double>
{};
template<> inline constexpr bool is_unquoted_safe<double>{true};
template<>
struct string_traits<long double> : internal::float_traits<long double>
{};
template<> inline constexpr bool is_unquoted_safe<long double>{true};
  

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

Комментарии:

1. Является ли это функцией c 17?

2. Я установил для своего языкового стандарта значение /std:c 17, но я думаю, что это так, да

3. @PascalG Visual Studio не обязательно правильно и полно реализует все стандартные функции c 17. Можете ли вы перейти на более новую версию Visual Studio? Вы можете проверить, указана ли она здесь .

4. Спасибо! Похоже, он должен работать с c 17, я недавно обновился до новейшей версии VS2017, я попробую позже с 2019, возможно, там это сработает.

5. Хорошо, большое спасибо! Теперь он работает в Visual Studio 2019, встроенные ошибки constexpr исчезли, но у меня все еще есть ошибки C2440 «const_Elem», которые не могут быть преобразованы в ошибки «std::string»….