mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-21 07:19:46 +08:00
Replace the call to int64_t in the blasutil test by explicit types
Some platforms define int64_t to be long long even for C++03. If this is the case we miss the definition of internal::make_unsigned for this type. If we just define the template we get duplicated definitions errors for platforms defining int64_t as signed long for C++03. We need to find a way to distinguish both cases at compile-time.
This commit is contained in:
parent
8ba1b0f41a
commit
c6820a6316
@ -160,6 +160,10 @@ template<> struct make_unsigned<unsigned long> { typedef unsigned long type;
|
||||
template<> struct make_unsigned<signed __int64> { typedef unsigned __int64 type; };
|
||||
template<> struct make_unsigned<unsigned __int64> { typedef unsigned __int64 type; };
|
||||
#endif
|
||||
|
||||
// TODO: Some platforms define int64_t as long long even for C++03. In this case
|
||||
// we are missing the definition for make_unsigned. If we just define it, we get
|
||||
// duplicated definitions for platforms defining int64_t as signed long for C++03
|
||||
#endif
|
||||
|
||||
template <typename T> struct add_const { typedef const T type; };
|
||||
|
@ -186,11 +186,17 @@ EIGEN_DECLARE_TEST(blasutil)
|
||||
{
|
||||
for(int i = 0; i < g_repeat; i++)
|
||||
{
|
||||
CALL_SUBTEST_1(run_test<int8_t>());
|
||||
CALL_SUBTEST_2(run_test<int16_t>());
|
||||
CALL_SUBTEST_3(run_test<int32_t>());
|
||||
CALL_SUBTEST_4(run_test<int64_t>());
|
||||
CALL_SUBTEST_5(run_test<float_t>());
|
||||
CALL_SUBTEST_6(run_test<double_t>());
|
||||
CALL_SUBTEST_1(run_test<numext::int8_t>());
|
||||
CALL_SUBTEST_2(run_test<numext::int16_t>());
|
||||
CALL_SUBTEST_3(run_test<numext::int32_t>());
|
||||
// TODO: Replace this by a call to numext::int64_t as soon as we have a way to
|
||||
// detect the typedef for int64_t on all platforms
|
||||
#if EIGEN_HAS_CXX11
|
||||
CALL_SUBTEST_4(run_test<signed long long>());
|
||||
#else
|
||||
CALL_SUBTEST_4(run_test<signed long>());
|
||||
#endif
|
||||
CALL_SUBTEST_5(run_test<numext::float_t>());
|
||||
CALL_SUBTEST_6(run_test<numext::double_t>());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user