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
| #include "gtest/gtest.h"
#include <iostream>
#include <memory>
template<typename T>
class A
{
public:
virtual float a() = 0;
};
class B : public A<float>
{
public:
float a()
{
return 3.0f;
};
};
std::unique_ptr<A<float>> use()
{
std::unique_ptr<B> res = std::make_unique<B>();
return res;
}
TEST(scratch, first)
{
auto c = use();
EXPECT_FLOAT_EQ((*c).a(), 3.0f);
} |
L'analyseur syntaxique sort cette erreur au niveaux du return de la fonction use :
no suitable user-defined conversion from "std::unique_ptr<B, std::default_delete<B>>" to "std::unique_ptr<A<float>, std::default_delete<A<float>>>" exists
Pourtant la compilation se déroule sans problème. Je compile sous vs2015 update3.
Partager