这是 GoogleTest AssertionResult 中的错误吗?
Is this a bug in GoogleTest AssertionResult?
我已经从 gtest.h 中删除了 EXPECT_TRUE
宏。
#include <type_traits>
#include <iostream>
class rai_class {
public:
static bool const value = true;
};
class AssertionResult {
public:
template <typename T>
explicit AssertionResult(
const T& success,
typename std::enable_if<
!std::is_convertible<T, AssertionResult>::value>::type*
= nullptr)
: success_(success) {}
operator bool() const { return success_; }
private:
bool success_;
};
// Test type trait
bool test_rai_hash_implemented()
{
return AssertionResult(rai_class::value);
//return rai_class::value;
}
int main()
{
std::cout << test_rai_hash_implemented() << "\n";
return 0;
}
没有优化,它会产生 link 错误 "undefined reference to `rai_class::value'"。
使用-O2 可以正常工作。有什么想法吗?
我已经从 gtest.h 中删除了 EXPECT_TRUE
宏。
#include <type_traits>
#include <iostream>
class rai_class {
public:
static bool const value = true;
};
class AssertionResult {
public:
template <typename T>
explicit AssertionResult(
const T& success,
typename std::enable_if<
!std::is_convertible<T, AssertionResult>::value>::type*
= nullptr)
: success_(success) {}
operator bool() const { return success_; }
private:
bool success_;
};
// Test type trait
bool test_rai_hash_implemented()
{
return AssertionResult(rai_class::value);
//return rai_class::value;
}
int main()
{
std::cout << test_rai_hash_implemented() << "\n";
return 0;
}
没有优化,它会产生 link 错误 "undefined reference to `rai_class::value'"。
使用-O2 可以正常工作。有什么想法吗?