Questions tagged [sfinae]
Substitution failure is not an error. This is a C++ programming technique that allows templates to verify properties about their template parameters, thus allowing different specializations to be used if certain kinds of objects are available.
sfinae
1,841
questions
-1
votes
0
answers
41
views
How to write C++ template SFINAE in my case [duplicate]
template<typename VertexType>
class CQuad
{
public:
VertexType tl, bl, tr, br;
void SetColor(const CColor& color)
{
//if VertexType has a member "color", then
...
-10
votes
1
answer
85
views
SFINAE-kindish function definition BUT without templates [closed]
Example
Many consumers of the following class
class A{
double a;
void dump(){
std::ofstream ooo("dump.txt"); ooo << A.a << "\n"; ooo.close();
}
};
will ...
1
vote
1
answer
63
views
C++ function dispatch based on user defined input type category (C++11/14 friendly)
I want to dispatch functions based on user defined "tag" of my input types. For example, I defined a tag called SomeSpecificObjectType and in class Object I mark this class as a ...
4
votes
2
answers
96
views
C++ ambiguous member vs non-member function template resolution in GCC 14 but not in prior GCC versions
The following code compiles fine with GCC 13 and earlier, but GCC 14.1 produces an "ambiguous overload" error. Is it a compiler or code problem, and, more pragmatically, can I make the ...
1
vote
1
answer
106
views
Template function accepting a pointer-to-member refuses to compile [duplicate]
Consider this class:
template <typename T>
struct Buffer {
template <typename Field>
int add_member_attribute(
std::string&& name,
Field T::* ...
3
votes
1
answer
117
views
How can `if constexpr` be made SFINAE-friendly?
I have a code using "classic" SFINAE.
template<class M> auto power(M const& elem) -> decltype(std::norm(elem)) { return std::norm(elem); }
template<class M, class = std::...
1
vote
0
answers
84
views
A question in writing is_container and output STL data
My code is
#include <type_traits>
#include <iostream>
template<typename T, typename = void>
struct is_container : std::false_type {};
template<typename T>
struct is_container ...
-2
votes
2
answers
126
views
How to check whether a function template exists in C++?
Is there a way to check the existence of a function (of a specific signature) regardless of whether it is templated or not?
For example:
template <bool FLAG>
class A
{
public:
template <...
0
votes
1
answer
56
views
Specialize function template for all types of pointers
I want to implement a streaming style logging lib.
I made a Log_t class to buffer a log entry, and do real output up on it being
destroyed, like this:
class Log_t: public std::ostringstream {
...
1
vote
2
answers
85
views
How to invoke template function with maybe incomplete type argument
Template function func<T> is designed to be used any where. It has the same function body for any T. I want to write its body only once. But the function depends on the definition type<T> ...
0
votes
0
answers
74
views
How does SFINAE affects symbol?
Given helpers as follow :
template <typename T, typename = void>
struct is_complete : std::false_type {};
template <typename T>
struct is_complete<T, decltype(void(sizeof(T)))> : ...
1
vote
1
answer
93
views
Function template correct definition for forward reference to an array and type of element
Minimal working example:
#include <array>
#include <iostream>
template <typename T> struct is_array : std::false_type {};
template <typename U, std::size_t N> struct is_array&...
2
votes
1
answer
96
views
Alias for class template parameter in C++
I have following code which detects if given type T is std::hashable. It checks validity of the passed parameters as well as if result of std::hash<T>::operator() is convertible to size_t:
...
2
votes
3
answers
80
views
c++ metaprogramming: 'nullptr' vs '0' as a default paramater for "enable_if<bool>::type* = [x]"
I'm new to metaprogramming, and I've encountered a certain behavior I couldn't understand.
It seems that you can use '0' as a default-function-parameter, but not as a default-template-parameter. and I ...
0
votes
1
answer
97
views
Forward reference vs rvalue [duplicate]
Minimal implementation:
#include <array>
#include <iostream>
template <typename T>
auto universal_ref(T&& arr)
{
for (auto && v : arr)
std::cout << ...