Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.