/usr/include/loki/yasli/yasli_traits.h is in libloki-dev 0.1.7-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #ifndef YASLI_TRAITS_H_
#define YASLI_TRAITS_H_
// $Id: yasli_traits.h 754 2006-10-17 19:59:11Z syntheticpp $
namespace yasli_nstd
{
/*
template <bool b, class T = void>
struct enable_if {};
template <class T>
struct enable_if<true, T> { typedef T type; };
*/
//!! TYPE SELECTORS
//Used in place of enable_if:
//not so neat or so versitile but they do compile
template<bool condition, class if_true, class if_false>
struct type_selector
{
typedef if_true result;
};
template<class if_true, class if_false>
struct type_selector<false, if_true, if_false>
{
typedef if_false result;
};
// Types for differentiating compile-time choices
typedef char (&yes_t)[1];
typedef char (&no_t)[2];
// Credit goes to Boost;
// also found in the C++ Templates book by Vandevoorde and Josuttis
//!! Wouldn't compile with these inside is_class
template <class U>
yes_t class_test(int U::*);
template <class U>
no_t class_test(...);
template <class T> struct is_class
{
enum { value = (sizeof(class_test<T>(0)) == sizeof(yes_t)) };
};
template <typename T> struct is_pointer
{
enum { value = false };
};
template <typename T> struct is_pointer<T*>
{
enum { value = true };
};
template <typename T> struct is_memcopyable
{
enum { value = int(!is_class<T>::value) };
};
template <typename T> struct is_memmoveable
{
enum { value = int(!is_class<T>::value) };
};
// For moving
enum move_t { move };
} // namespace yasli_nstd
#endif // YASLI_TRAITS_H_
|