boostorg / boostorg/scope_exit

id2type_impl specialization before declaration fails to compile in MSVC with /permissive- flag

Open
#9 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
17
Forks
34
PR merge metrics
No merged PRs in 30d

Description

See the compilation failure [on godbolt](https://godbolt.org/z/lT4Kf_)

The full specialization of id2type_impl in the full template definition of msvc_extract_type is the problem, and can easily be solved by swapping the order (full declaration before specialization definition).

If that link is stale, go to godbolt + msvc + add flag "/permissive-" (without quotes), and paste the code below (wish we could use boost + MSVC on godbolt):

```
template
struct msvc_extract_type {
template<>
struct id2type_impl { // VC8.0 specific bug-feature.
typedef T type;
};

template
struct id2type_impl;

typedef id2type_impl id2type;
};
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.