boostorg / boostorg/mpl

`push_back<vector20<...>, X>::type` on MSVC triggers static assert

Open
#43 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
65
Forks
81
PR merge metrics
No merged PRs in 30d

Description

The following code is fine on GCC and Clang, but fails on MSVC and ICC.
```cpp
#include
#include

struct X;

using vec = boost::mpl::vector;
using test = boost::mpl::push_back::type;
```

https://godbolt.org/z/w-yTto

This inconsistency confuses people: 1) https://stackoverflow.com/questions/55900932/issue-with-x3-and-ms-vs2017 2) https://github.com/boostorg/spirit/issues/515

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the minimal Boost.MPL reproducer in the issue and compare its behavior on GCC, Clang, MSVC, and ICC using the linked Compiler Explorer example. Trace the push_back, X>::type instantiation and determine why the static assertion differs across compilers. Done means the reported inconsistency is resolved or its supported behavior is clearly established for the affected toolchains.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.