[odb-users] odb2.6 gcc16 non-constant condition for static
assertion (maybe incomplete type)
MM
finjulhich at gmail.com
Sat May 16 16:44:37 EDT 2026
Hello, I will sent a standalone reproducible but does this error stack hint
at anything that can help me towards reducing the problem?
odb -d pgsql --std c++20 --profile boost --generate-query -I/myhome/myproj
-I/usr/include --changelog /myhome/myproj/odb/otp_pgsql.xml
/myhome/myproj/mystuff_live_odb/things.hpp
struct selector {
std::string ctype;
uint64_t cid;
};
using things_t = std::unordered_map<selector, double>;
#pragma db value(selector) definition
#pragma db member(selector::ctype) column("cype")
#pragma db member(selector::cid) column("cid")
#pragma db object(things_ns) definition table("p")
#pragma db member(things_ns::id) id virtual(std::size_t) column("pid")
#pragma db value(things_ns::things_t) value_column("posn")
#pragma db member(things_ns::things) virtual(things_ns::things_t)
In file included from /usr/include/c++/16/bits/char_traits.h:52,
from /usr/include/c++/16/string:45,
from <standard-odb-prologue>:7:
/usr/include/c++/16/type_traits: In instantiation of ‘struct
std::is_default_constructible<std::equal_to<myproj::mystuff_ns::selector>
>’:
/usr/include/c++/16/type_traits:191:35: required by substitution of
‘template<class ... _Bn>
std::__detail::__first_t<std::integral_constant<bool, true>, typename
std::enable_if<(bool)(_Bn::value), void>::type ...>
std::__detail::__and_fn(int) [with _Bn =
{std::is_default_constructible<std::equal_to<myproj::mystuff_ns::selector>
>, std::is_default_constructible<std::hash<myproj::mystuff_ns::selector> >,
std::is_default_constructible<std::allocator<std::pair<const
myproj::mystuff_ns::selector, double> > >}]’
191 |
__enable_if_t<bool(_Bn::value)>...>;
| ^~~~~
/usr/include/c++/16/type_traits:207:42: required from ‘struct
std::__and_<std::is_default_constructible<std::equal_to<myproj::mystuff_ns::selector>
>, std::is_default_constructible<std::hash<myproj::mystuff_ns::selector> >,
std::is_default_constructible<std::allocator<std::pair<const
myproj::mystuff_ns::selector, double> > > >’
207 | : decltype(__detail::__and_fn<_Bn...>(0))
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/16/bits/hashtable.h:64:11: required by substitution of
‘template<class _Equal, class _Hash, class _Allocator> using
std::_Hashtable_enable_default_ctor =
std::_Enable_default_constructor<std::__and_<std::is_default_constructible<_Equal>,
std::is_default_constructible<_Dp>,
std::is_default_constructible<_Allocator> >{},
std::__detail::_Hash_node_base> [with _Equal =
std::equal_to<myproj::mystuff_ns::selector>; _Hash =
std::hash<myproj::mystuff_ns::selector>; _Allocator =
std::allocator<std::pair<const myproj::mystuff_ns::selector, double> >]’
64 | using _Hashtable_enable_default_ctor
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/hashtable.h:189:11: required from ‘class
std::_Hashtable<myproj::mystuff_ns::selector, std::pair<const
myproj::mystuff_ns::selector, double>, std::allocator<std::pair<const
myproj::mystuff_ns::selector, double> >, std::__detail::_Select1st,
std::equal_to<myproj::mystuff_ns::selector>,
std::hash<myproj::mystuff_ns::selector>, std::__detail::_Mod_range_hashing,
std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
std::__detail::_Hashtable_traits<true, false, true> >’
189 | class _Hashtable
| ^~~~~~~~~~
/usr/include/c++/16/bits/unordered_map.h:115:18: required from ‘class
std::unordered_map<myproj::mystuff_ns::selector, double>’
115 | _Hashtable _M_h;
| ^~~~
/myhome/myproj/mystuff_live_odb/things.hpp:15:12: required from here
15 | #pragma db member(things_ns::things) virtual(things_ns::things_t)\
| ^~~~~~
/usr/include/c++/16/type_traits:1253:52: error: non-constant condition for
static assertion
1253 |
static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/16/type_traits:1253: confused by earlier errors, bailing
out
I can't see what is _Tp that the assertion is tying to deterime its type is
complete
this worked fine with odb2.5 and gcc15 c++17
Rds,
More information about the odb-users
mailing list