1
0
mirror of https://github.com/nlohmann/json.git synced 2025-07-31 10:24:23 +03:00

Merge pull request #919 from theodelrieu/fix/sfinae_for_incomplete_types

fix sfinae on basic_json UDT constructor
This commit is contained in:
Niels Lohmann
2018-01-23 07:32:06 +01:00
committed by GitHub
4 changed files with 83 additions and 20 deletions

View File

@ -692,3 +692,22 @@ TEST_CASE("custom serializer that does adl by default", "[udt]")
CHECK(me == j.get<udt::person>());
CHECK(me == cj.get<udt::person>());
}
namespace
{
struct incomplete;
// std::is_constructible is broken on macOS' libc++
// use the cppreference implementation
template <typename T, typename = void>
struct is_constructible_patched : std::false_type {};
template <typename T>
struct is_constructible_patched<T, decltype(void(json(std::declval<T>())))> : std::true_type {};
}
TEST_CASE("an incomplete type does not trigger a compiler error in non-evaluated context", "[udt]")
{
static_assert(not is_constructible_patched<json, incomplete>::value, "");
}