Opened 7 years ago
#11682 new Bugs
fusion::pair not compatible with std::is_default_constructible
| Reported by: | Owned by: | Joel de Guzman | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | fusion |
| Version: | Boost 1.59.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
When the Second type of pair is not default constructible, std::is_default_constructible either returns true or fails to compile for fusion::pair.
This is on OSX with apple and macports compilers.
Adding enable_if< is_default_constructible<Second> > to pair's default constructor makes this work as expected.
struct NotDefaultConstructible {
NotDefaultConstructible(int){};
};
// prints 0
std::cout << std::is_default_constructible< NotDefaultConstructible >::value << std::endl;
using fusion_pair1 = boost::fusion::pair<int, NotDefaultConstructible>;
// should print 0
// fails to compile on clang (xcode 7, 3.4, 3.6, 3.7), gcc 4.9
// prints 1 on gcc 5, clang 3.4
std::cout << std::is_default_constructible< fusion_pair1 >::value << std::endl;
Test and patch attached. Patch is unlikely to meat portability requirements to be applied as-is.
Attachments (2)
Change History (2)
by , 7 years ago
| Attachment: | test-11681.cpp added |
|---|
by , 7 years ago
| Attachment: | patch1-11681.patch added |
|---|
Note:
See TracTickets
for help on using tickets.

Test app