mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-17 14:22:13 +02:00
Fix for fusion pair to make the compiler select the proper copy
constructor and remove a viable, but wrong, constructor. test added.
This commit is contained in:
@ -25,6 +25,19 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
|
||||
struct copy_all
|
||||
{
|
||||
copy_all() {}
|
||||
copy_all(copy_all const&) {}
|
||||
|
||||
template <typename T>
|
||||
copy_all(T const& x)
|
||||
{
|
||||
foo(x); // should fail!
|
||||
}
|
||||
};
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
@ -119,6 +132,13 @@ main()
|
||||
BOOST_TEST(at_key<char>(make_map<char, int>('X', 123)) == 'X');
|
||||
BOOST_TEST(at_key<int>(make_map<char, int>('X', 123)) == 123);
|
||||
}
|
||||
|
||||
{
|
||||
// test for copy construction of fusion pairs
|
||||
// make sure that the correct constructor is called
|
||||
pair<int, copy_all> p1;
|
||||
pair<int, copy_all> p2 = p1;
|
||||
}
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
Reference in New Issue
Block a user