type_traits.h
Go to the documentation of this file.
459 * https://stackoverflow.com/questions/87372/check-if-a-class-has-a-member-function-of-a-given-signature#answer-10707822
462 * src="https://godbolt.org/e?readOnly=true&hideEditorToolbars=true#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAM1QDsCBlZAQwBtMQBGAFlICsQAJlKtmtUMgCkggELSZpAM6Z2yAnjqVMtdAGFUrAK4BbWl1Lb0AGTy1MAORMAjTMRDcArKQAOqRYQ1afSNTc19/dTobO0djFzdPJRVMNUCGAmZiAmCTM04k1UjadMyCaIdnV3cvRQysnND82tLy2PjqgEolVENiZA4AcmkAZltkIywAaklh3UN1VkIATxnsSQAGAEENzYJMY29RPenZgiXvbWZjTEmAMWJUY1JJs4vaK5uAFVRVnfHmRSKSYIAEAfTQtAAbq5/HRQagLsRmERiDtJAB2ORbSY4l7nTBYKiTZAg4iTOiYGZYza4ya1YiGNQvADuqGmmOJpMmAA9JB4ZII%2BQARKnskXDak7Wl7A5HG4zXSvS7XO7PJXvFWfNX4jXy4ZCukEdAgECXJzsUF4KigggK2rGkB4RTg0SAhVYcZKiD2k0e1iQtgKiG1O7SABsqwgHQAdAjXMiSJNPlGOqsTQGjJThmts4bkXhkOS7C9MLUIJM/V6fSA/Rmg3QQ7dw5GY3GkSikymAFSTVMSqW4mWHZF6xU6j6qvFvCefVZ59SFgisktl6NrvuSrbeQzmgsgAc47QmdkySYZwx6g3%2BABemFQVAge1qCvuj2e30j6w6HRO4qveFve8IBJTIfwxcVJXRCC0S2EYxgmUclRtJFCEUX5YK2AB6LswDAJMEBuIc5WmMN1hBZ1gwIUFiEwKhXG0fp4W8BUtRzNZSMmTBuV8LIgWYA9JicVADEwMRiQbDJ6BI9Zz0IkECEmJ0XgZG4rSJSRSNnDjvAeSE8CwNDsVxDT1mwJMTTbBNiC7KNxNoZ9SJ2LtMOmLYiJHBUp2VG5XyeLzdSTH5sx2elGQU8jwToaFiFhWgmPjFFBVgzEBOwyYGFuABJexNjMyyUQAWnIgq0GIGi1AK/xgEmEAf2cgT3L2BV1QnbZgqMnFmgXQ0HQIFSbXxFcCAgb5JggTYTS7DpbMosCUo62lJhogheloHqTT6i8BouKMqQE8CYJpXE0oy7LcvJRErIKrinQIIFasmeqFsaxDxxVNqzIErqCwrFJWC9J9hvDCaQHyxNvm/VyjpxQGIErfEIGBizLo7CHSEhVB9MeubqUW46ewAeRRxMbtqRRo0mAB1eTJmYIT5jpPBgBmW5HswgTpXxQlfs9BHYaR0HibJCGf2W1btqzU8OdxMXiDW2W4q9Dd9qgw7aROrKcrM4AJ1QaKavLJ7oZLWUPNON6bg%2Br6Mm66sqDYZQJaGiA12jHHpZxBX1pAe3WEdpXRRVkUMONtLPgQJTmTwVhWEEm5MEIAiyRM6tNswCWTPJZPSLth306VTOjc5i5ufhnbAZfB5jE/Ugvx/Av%2BxD2lvsLSjBOE2PZN/Lz0zYC9RTS6mCwQRSgUIFm2bRVXG82UKmU%2BdYTwOme54Uz5OCX6fqVXu4l6MrjDgLQgLoS8H1hmiSTyWzAVrlzeILFKfoJDuCqG50FQWyz5sCsUFdAJgAsgABUylYbAAAlUEMgACqoChSgiFJsb%2BaJBDDGZJkWgthqrSEEJlXQugKyoFLJMWgqAFKsmIAAa0mFHAgI86E3CoHgGKCloqxXJESBhylmDj0EElbYqCVDKBCjbAsoIATKCyBACKEI2GBHiu2EgL53zrDTCAWSzwcE9BJKovhytYKCJ0FaER%2BZkDiMBK4YauEZFRRhPIsGqJZi3HfJwNRGjph8O0QgVxei9pbBbuYyRw0bFQjsXCBxgonEqLcX3TAmjPGMgQLowQ%2BjZ6iLMRIyxEBrFglkWEuKETlFJlcdmXumZ4mCC8T4lJVIBhdFYCAAYHgBikDMAMdYLTUCNN0PIeQdIeh9HlKgwQLSCCNI6d%2BUglD3DrGjMMYYHhOCCAABxhjDB4bgYYACc6JlkiEadwFpbSOmkC6QMFpigQDrFIGM9pdTSBwFgEgNABxo6uHIJQF53g3luALMgTgWz8hMP%2BjCSgThxktKcLYTISxGmcBaS8649ACa0FYLCu5pAsDGDEMAdgELMXMJSOoaElyMVcRSPMQY8LyD0BUPixYTgkTECWPoLAcLRnEDwMYdlXQaD0CYGwDgPB%2BDmFEOIFAvTZAiDwE4S5kAugIiKKSyqRoZhCikLIeQPALnJFSJoCAlgGh5AsDoVolQ3D5HCAEOgRqwh%2BGtbQM1cQqhNF1UUEo9QDC5HMMoQoaQ6hlFsBUZ1FqlABttU0ANTr2icC6IoAZ/QhD1Mac01p%2BKznclWQVMM3BFLIELAC6MsyN4QFwIQRMIxhCTH0K89gydUGxurZKmQoyIWTIIswLAbgoxTKEIIOZ3BuDDHRJ4dYHhlnrEEFs5ZwgGkDEOWmjFZyLlXJuW2h5MBECg3mNuAgHzgKPG%2BXW8wBJy1uGEHyxgLA8XCuZEibwPL9lNKOemxpIwN60JHpmsM2bc1/MmIW4tra7mTOmcOuZgh1jcC2WGGdyz0SCAQ7wOdC7jmdMaSu65tyJnJoGCMxdJzl1rpA10ORmhuBAA"></iframe>
Detect a lazy evaluation tile that are not a LazyArrayTile.
Definition: type_traits.h:690
Definition: type_traits.h:625
decltype(auto) subt(const Tile< Left > &left, const Tile< Right > &right)
Subtract tile arguments.
Definition: tile.h:879
constexpr const bool is_array_tile_v
is_array_tile_v<T> is an alias for is_array_tile<T>::value
Definition: type_traits.h:678
std::add_lvalue_reference< typename std::add_const< T >::type >::type type
Definition: type_traits.h:972
constexpr const bool is_pair_v
is_pair_v<T> is an alias for is_pair<T>::value
Definition: type_traits.h:1203
constexpr const bool is_integral_pair_v
is_integral_pair_v<T> is an alias for is_integral_pair<T>::value
Definition: type_traits.h:909
Primary template for detecting if T is an std::initializer_list.
Definition: type_traits.h:1217
Definition: array_impl.h:203
remove_cvr_t< decltype(*std::begin(std::declval< T & >()))> value_t
Definition: type_traits.h:1113
constexpr const bool is_non_array_lazy_tile_v
Definition: type_traits.h:696
static auto test(void *) -> decltype(std::add_pointer_t< decltype(std::declval< U >()< std::declval< U >())>
Definition: type_traits.h:767
typename TiledArray::detail::numeric_type< T >::type numeric_t
numeric_t<T> is an alias for numeric_type<T>::type
Definition: type_traits.h:730
Definition: type_traits.h:996
decltype(std::declval< Scalar1 >() *std::declval< Scalar2 >()) mult_t
Definition: type_traits.h:1159
constexpr const bool is_integral_tuple_v
is_integral_tuple_v<T> is an alias for is_integral_tuple<T>::value
Definition: type_traits.h:952
void permute(InputOp &&input_op, OutputOp &&output_op, Result &result, const Perm &perm, const Arg0 &arg0, const Args &... args)
Construct a permuted tensor copy.
Definition: permute.h:117
constexpr const bool is_std_gettable_v
Definition: type_traits.h:840
helper to implement other metafunctions is_type<T>::value is true if T is a valid type
Definition: type_traits.h:389
std::random_access_iterator_tag iterator_category
Definition: type_traits.h:1019
Type trait for extracting the scalar type of tensors and arrays.
Definition: type_traits.h:744
constexpr const bool is_scalar_v
is_scalar_v<T> is an alias for is_scalar_v<T>
Definition: type_traits.h:659
std::add_const< T >::type type
Definition: type_traits.h:977
T type
Definition: type_traits.h:748
Tile< Result > & mult_to(Tile< Result > &result, const Tile< Arg > &arg)
Multiply to the result tile.
Definition: tile.h:1081
std::add_const< T >::type type
Definition: type_traits.h:987
constexpr const bool is_gettable_pair_v
is_gettable_pair_v<T> is an alias for is_gettable_pair<T>::value
Definition: type_traits.h:888
Definition: type_traits.h:635
Definition: type_traits.h:969
std::random_access_iterator_tag iterator_category
Definition: type_traits.h:1014
Lazy tile for on-the-fly evaluation of array tiles.
Definition: array_eval.h:42
Definition: type_traits.h:1162
constexpr const bool has_conversion_operator_v
Definition: type_traits.h:496
constexpr const bool is_complete_type_v
Definition: type_traits.h:412
std::enable_if_t< is_numeric_v< T >, U > enable_if_numeric_t
SFINAE type for enabling code when T is a numeric type.
Definition: type_traits.h:649
T::eval_type type
Definition: type_traits.h:557
decltype(auto) add(const Tile< Left > &left, const Tile< Right > &right)
Add tile arguments.
Definition: tile.h:734
constexpr const bool is_integral_pair_list_v
Definition: type_traits.h:939
decltype(std::begin(std::declval< T & >())) iterator_t
Definition: type_traits.h:1106
static No test(...)
constexpr const bool is_boost_gettable_v
Definition: type_traits.h:851
Definition: type_traits.h:51
typename TiledArray::detail::scalar_type< T >::type scalar_t
scalar_t<T> is an alias for scalar_type<T>::type
Definition: type_traits.h:760
decltype(std::declval< Scalar1 >() - std::declval< Scalar2 >()) subt_t
Definition: type_traits.h:1156
constexpr const bool is_explicitly_convertible_v
Definition: type_traits.h:508
Tile< Result > & add_to(Tile< Result > &result, const Tile< Arg > &arg)
Add to the result tile.
Definition: tile.h:831
Remove const, volatile, and reference qualifiers.
Definition: type_traits.h:956
decltype(auto) mult(const Tile< Left > &left, const Tile< Right > &right)
Multiplication tile arguments.
Definition: tile.h:1018
Definition: type_traits.h:819
constexpr const bool is_consumable_tile_v
is_consumable_tile_v<T> is an alias for is_consumable_tile<T>::value
Definition: type_traits.h:618
T type
Definition: type_traits.h:713
Definition: type_traits.h:652
typename std::conditional< B, const T, T >::type const_if_t
prepends const to T if B is true
Definition: type_traits.h:966
constexpr const bool is_integral_list_v
is_integral_list_v<T> is an alias for is_integral_list<T>::value
Definition: type_traits.h:812
constexpr const bool is_complex_v
is_complex_v<T> is an alias for is_complex<T>::value
Definition: type_traits.h:632
constexpr const bool is_lazy_tile_v
is_lazy_tile_v<T> is an alias for is_lazy_tile<T>::value
Definition: type_traits.h:598
Definition: array_impl.cpp:28
Definition: type_traits.h:1196
std::iterator_traits< T >::iterator_category iterator_category
Definition: type_traits.h:1004
constexpr const bool is_numeric_v
is_numeric_v<T> is an alias for is_numeric<T>::value
Definition: type_traits.h:645
decltype(std::declval< Scalar1 >()+std::declval< Scalar2 >()) add_t
Definition: type_traits.h:1153
Definition: type_traits.h:71
#define GENERATE_IS_FREE_FUNCTION_ANYRETURN(Function)
Definition: type_traits.h:244
TiledArray::detail::param< T, typename std::enable_if< std::is_reference< T >::value >::type >::type
T type
Definition: type_traits.h:982
typename remove_cvr< T >::type remove_cvr_t
Definition: type_traits.h:962
helper to implement other metafunctions is_complete_type<T>::value is true if T is a complete type
Definition: type_traits.h:401
std::random_access_iterator_tag iterator_category
Definition: type_traits.h:1024
constexpr const bool is_strictly_ordered_v
is_strictly_ordered_v<T> is an alias for is_strictly_ordered<T>::value
Definition: type_traits.h:786
std::remove_cv< typename std::remove_reference< T >::type >::type type
Definition: type_traits.h:958
Type trait for extracting the numeric type of tensors and arrays.
Definition: type_traits.h:709
Tile< Result > & subt_to(Tile< Result > &result, const Tile< Arg > &arg)
Subtract from the result tile.
Definition: tile.h:972
Definition: type_traits.h:1059
Determine the object type used in the evaluation of tensor expressions.
Definition: type_traits.h:580
non_iterator_tag iterator_category
Definition: type_traits.h:997
decltype(auto) at(GeneralizedPair &&v, std::size_t idx)
at(pair, i) extracts i-th element from gpair
Definition: type_traits.h:1268
constexpr const bool is_tuple_v
is_tuple_v<T> is an alias for is_tuple<T>::value
Definition: type_traits.h:826
#define GENERATE_HAS_MEMBER_FUNCTION(Member)
Definition: type_traits.h:169
constexpr const bool is_implicitly_convertible_v
Definition: type_traits.h:521
constexpr const bool is_convertible_v
Definition: type_traits.h:537
std::random_access_iterator_tag iterator_category
Definition: type_traits.h:1009
#define GENERATE_HAS_MEMBER_FUNCTION_ANYRETURN(Member)
Definition: type_traits.h:211