wrong error "Substitution failed with N = <empty>"
After update Resharper C++ 2022.3, Resharper displays error with "Substitution failed with N = <empty>" but VS builds succesfully.
It looks like https://youtrack.jetbrains.com/issue/RSCPP-23950/Wrong-error-Substitution-failed-with-N-empty.
It can be reproduced with the code below.
#include <iostream>
#include <algorithm>
/**
* Literal class type that wraps a constant expression string.
*
* Uses implicit conversion to allow templates to *seemingly* accept constant strings.
*/
template<size_t N>
struct StringLiteral {
constexpr StringLiteral(const char (&str)[N]) {
std::copy_n(str, N, value);
}
char value[N];
};
template<StringLiteral lit>
void Print() {
// The size of the string is available as a constant expression.
constexpr auto size = sizeof(lit.value);
// and so is the string's content.
constexpr auto contents = lit.value;
std::cout << "Size: " << size << ", Contents: " << contents << std::endl;
}
int main()
{
Print<"literal string">(); // Prints "Size: 15, Contents: literal string"
}
Please sign in to leave a comment.
Thanks for the report!
I believe we've already fixed this issue, the fix should be available in 2023.1.